2012-06-21 45 views
1

我有一個UIView子類,其中添加了一個觀察者UIKeyboardWillShowNotificationUIKeyboardWillHideNotification。這UIView是在UITableViewCell子類。我有另外兩個UITableViewCell的子類包含UITextFields。當點擊這些文本字段時,我的自定義UIView會收到這些通知。我有這三個UITableViewCell子類設置爲電子郵件作曲者視圖類型的東西。UIKeyboardWillShow/WillHide Notification,如何知道這些通知何時用於註冊觀察者

我怎樣才能確保當我UIView子類接收鍵盤會顯示或隱藏的通知,這是爲UIView,而不是包含UI文本字段其他UITableViewCell's

我應該提到我在我的UIView子類中有一個UIWebView。當點擊一個contenteditable div時,我想要收到鍵盤提示的通知,但僅限於我的UIWebView實例。

我在想我可以做以下事情,但那似乎不起作用。

[[NSNotificationCenter defaultCenter] addObserver:self [email protected](selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:_webView]; 

回答

1

我認爲這取決於什麼你需要的UIKeyboardNotification,就可以實現同樣的事情:

- (void)textFieldDidBeginEditing:(UITextField *)textField 

時看到的編輯沒有開始。而這個時候看到編輯做結尾:

- (void)textFieldDidEndEditing:(UITextField *)textField 

不要忘記你的UITableViewCells必須符合UITextFieldDelegate協議。

Quick reference about the UITextFieldDelegate protocol


編輯:還有一兩件事,我給你的解決方案是有道理的,當你有需要知道當一個特定的UITextField成爲第一個響應者。如果你不關心這一點,並且你只需要知道鍵盤實際來來去去,你應該通知UIViewController有你的UITableView,而不是每個單獨的單元格。 UIViewController應該採取適當的行動。

+0

當我在UIView子類中有一個UIWebView時怎麼辦?我有三個UITableViewCell子類在我的視圖控制器中引用。其中兩個擁有UITextField,另一個擁有帶UIWebView的客戶UIView。自定義UIView偵聽鍵盤通知。我想我可以在我的兩個UITableViewCell子類中實現UITextFieldDelegate,並通過視圖控制器告訴那些人正在進入時,我可以在我的自定義UIView上有一個委託來檢查鍵盤通知是否爲該自定義UIView。 – developerdoug