2012-06-21 44 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