如何检测UITextField中的KeyPress事件?
在UITextView
有一个Changed事件来处理按键。 但是UITextField
没有这样的事件。
如何检测UITextField
的KeyPress事件?
这里有一个使用通知描述的方法,但是我的问题是我无法从TextFieldTextDidChangeNotification取消订阅。
我不确定哪个是你的问题。 第一个你似乎已经回答自己,即解决scheme(从您的链接)是使用NSNotificationCenter.DefaultCenter.AddObserver
。
第二个是关于取消订阅 – 如果你想停止观察你应该调用前面的方法副本,即NSNotificationCenter.DefaultCenter.RemoveObserver
。
只需保持从AddObserver
返回的对象,以便您可以将其提供给RemoveObserver
。
注意:如果我没有正确理解你的问题,请使用编辑,并添加一些细节和/或你想达到的代码,我们会尽力帮助:-)
如colintabuild议,做这个
- (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; }
如果通过拼写build议更改了input,它也会起作用。
看看UITextFieldDelegate
实施该协议。 它已经调用了所有文本字段更改的方法。
观察UITextField
变化的最简洁的方法是
_textField.AddTarget((sender, e) => { // Do your stuff in here }, UIControlEvent.EditingChanged);
您不必订阅系统范围的通知中心,并且在删除文本字段时不必注销观察者。
希望这将有助于未来的人:)