如何检测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

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

实施该协议。 它已经调用了所有文本字段更改的方法。

观察UITextField变化的最简洁的方法是

 _textField.AddTarget((sender, e) => { // Do your stuff in here }, UIControlEvent.EditingChanged); 

您不必订阅系统范围的通知中心,并且在删除文本字段时不必注销观察者。

希望这将有助于未来的人:)