当 UITextField 成为FirstResponder 时得到通知
Posted
技术标签:
【中文标题】当 UITextField 成为FirstResponder 时得到通知【英文标题】:get notified when UITextField becomeFirstResponder 【发布时间】:2013-01-24 22:19:09 【问题描述】:UITextField
becomeFirstResponder
时我如何获得通知?
我可以像isFirstResponder
一样检查或通过becomeFirstResponder
设置成为第一响应者
我想在用户将此文本字段设为第一响应者时收到通知或处理事件。
谢谢。
【问题讨论】:
【参考方案1】:您需要成为文本字段的委托并实现此可选委托方法:
- (void)textFieldDidBeginEditing:(UITextField *)textField;
【讨论】:
【参考方案2】:除了实现UITextFieldDelegate
方法textFieldDidBeginEditing:
,您还可以注册UITextFieldTextDidBeginEditingNotification
通知。
通知方式可以是:
- (void)someTextFieldDidBeginEditing:(NSNotification *)notification
UITextField *textField = (UITextField *)notification.object;
【讨论】:
【参考方案3】:委托绝对是要走的路。不幸的是,在我的情况下我不能使用它,因为控制器是我的 UITextField 子类的代表,我需要修改它的占位符文本。相反,我重写了方法- (BOOL)canBecomeFirstResponder;
和- (BOOL)resignFirstResponder;
。一定要打电话给super。
【讨论】:
是的,你记得打电话给 super 的评论解决了我的问题。【参考方案4】:对于 OSX,您应该注意在依赖 NSControlTextDidBeginEditingNotification
时按钮会产生副作用。
当您开始编辑,按一些按钮,然后继续编辑文本字段时,当您继续编辑时,您将不会再收到NSControlTextDidBeginEditingNotification
。
如果此行为导致问题,UITextFieldTextDidChangeNotification
可能是替代方案。
【讨论】:
以上是关于当 UITextField 成为FirstResponder 时得到通知的主要内容,如果未能解决你的问题,请参考以下文章
如何使键盘 UITextField 中的数字视图成为默认值?
UITableView 单元格中的 UITextField 以编程方式成为FirstResponder
UITextField 不能成为 UITableView 中的第一响应者