如何在UITextField中检测KeyPress事件?
本文关键字:KeyPress 事件 检测 UITextField | 更新日期: 2023-09-27 18:13:41
在UITextView
中有一个Changed事件来处理按键。然而UITextField
没有这样的事件。
如何检测UITextField
中的KeyPress事件?
这里有一个方法描述使用通知,但我的问题是,我不能从TextFieldTextDidChangeNotification取消订阅。
我不确定你的问题是哪个。第一个问题你似乎已经自己回答了,也就是。解决方案(从您的链接)是使用NSNotificationCenter.DefaultCenter.AddObserver
。
NSNotificationCenter.DefaultCenter.RemoveObserver
。只保留从AddObserver
返回的对象,以便您可以将其提供给RemoveObserver
。
注意:如果我没有正确理解你的问题,请使用编辑并添加一些细节和/或你想要实现的代码,我们将尽我们最大的努力帮助:-)
按照colinta的建议,这样做
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *text = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSLog(@"range = %@, replacement = %@, text = %@", NSStringFromRange(range), string, text);
return YES;
}
和
- (BOOL)textFieldShouldClear:(UITextField *)textField {
NSLog(@"clear text");
return YES;
}
如果输入是通过拼写建议更改的,
查看UITextFieldDelegate
http://developer.apple.com/library/ios/文档/uikit/引用/UITextFieldDelegate_Protocol/UITextFieldDelegate UITextFieldDelegate.html
实现该协议。
观察UITextField
变化的最干净的方法是
_textField.AddTarget((sender, e) =>
{
// Do your stuff in here
}, UIControlEvent.EditingChanged);
你不需要订阅一个系统范围的通知中心,当你销毁一个文本字段时,你也不需要取消observer的注册。
希望这对将来的人有帮助