UITextField文本更改回调

时间:2012-07-25 04:54:27

标签: iphone objective-c ios xcode uitextfield

我有一个名为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];

这也行不通。

我该怎么做?

感谢。

2 个答案:

答案 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.
}