在UITextView
中,有一个已更改事件来处理按键。但是UITextField
没有这样的事件。
如何在UITextField
?
有一种方法描述here使用通知,但我遇到的问题是我无法取消订阅TextFieldTextDidChangeNotification。
答案 0 :(得分:3)
我不确定你的问题是什么。你似乎第一个回答了自己,即
解决方案(来自您的链接)是使用NSNotificationCenter.DefaultCenter.AddObserver
。
第二个是关于取消订阅 - 如果你想停止观察你应该调用前面的方法对应物,即NSNotificationCenter.DefaultCenter.RemoveObserver
。
只需保留从AddObserver
返回的对象,即可将其提供给RemoveObserver
。
注意:如果我没有正确理解您的问题,请使用修改并添加一些您想要实现的细节和/或代码,我们将执行最好的帮助: - )
答案 1 :(得分:2)
正如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;
}
如果通过拼写建议更改了输入,它也会起作用。
答案 2 :(得分:1)
查看UITextFieldDelegate
实施该协议。它具有所有文本字段更改的回调方法。
答案 3 :(得分:0)
观察UITextField
更改的最简洁方法是
_textField.AddTarget((sender, e) =>
{
// Do your stuff in here
}, UIControlEvent.EditingChanged);
您不必订阅系统范围的通知中心,并且在您销毁文本字段时也不必取消注册观察者。
希望这将有助于未来的人:)