【发布时间】:2013-01-24 22:19:09
【问题描述】:
UITextFieldbecomeFirstResponder 时我如何获得通知?
我可以像isFirstResponder 一样检查或通过becomeFirstResponder 设置成为第一响应者
我想在用户将此文本字段设为第一响应者时收到通知或处理事件。
谢谢。
【问题讨论】:
标签: iphone ios uitextfield first-responder becomefirstresponder
UITextFieldbecomeFirstResponder 时我如何获得通知?
我可以像isFirstResponder 一样检查或通过becomeFirstResponder 设置成为第一响应者
我想在用户将此文本字段设为第一响应者时收到通知或处理事件。
谢谢。
【问题讨论】:
标签: iphone ios uitextfield first-responder becomefirstresponder
您需要成为文本字段的委托并实现此可选委托方法:
- (void)textFieldDidBeginEditing:(UITextField *)textField;
【讨论】:
除了实现UITextFieldDelegate方法textFieldDidBeginEditing:,您还可以注册UITextFieldTextDidBeginEditingNotification通知。
通知方式可以是:
- (void)someTextFieldDidBeginEditing:(NSNotification *)notification {
UITextField *textField = (UITextField *)notification.object;
}
【讨论】:
委托绝对是要走的路。不幸的是,在我的情况下我不能使用它,因为控制器是我的 UITextField 子类的代表,我需要修改它的占位符文本。相反,我重写了方法- (BOOL)canBecomeFirstResponder; 和- (BOOL)resignFirstResponder;。一定要打电话给super。
【讨论】:
对于 OSX,您应该注意在依赖 NSControlTextDidBeginEditingNotification 时按钮会产生副作用。
当您开始编辑,按一些按钮,然后继续编辑文本字段时,当您继续编辑时,您将不会再收到NSControlTextDidBeginEditingNotification。
如果此行为导致问题,UITextFieldTextDidChangeNotification 可能是替代方案。
【讨论】: