我有一个名为textFieldInput的UITextField和一些按钮。不知怎的,我禁用了输入视图,这样如果有人点击texField,就不会显示键盘。按编程方式按下按钮时,我正在添加文本。我想抓住这个变化。我想在textField的文本发生变化时调用函数。我怎么能这样做?
我尝试添加以下功能
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementStr {
// some my code
return YES;
}
但这不起作用。这只在我点击textField时调用。
我还尝试在viewDidLoad函数中添加以下内容
[textFieldInput addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
这也行不通。
我该怎么做?
感谢。
答案 0 :(得分:7)
注册通知。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textChanged:)
name:UITextFieldTextDidChangeNotification
object:YOUR_TEXT_FIELD];
答案 1 :(得分:1)
shouldChangeCharactersInRange:
只有在使用实现此方法的控制器设置其委托时,这才有效。另一种方式是:
添加这些行viewDidLod
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector (handle_TextFieldTextChanged:)
UITextFieldTextDidChangeNotification
object: textFieldInput];
并实施handle_TextFieldTextChanged:
- (void) handle_TextFieldTextChanged:(id)notification {
// write your logic here.
}