3

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

这也行不通。

我怎样才能做到这一点?

谢谢。

4

2 回答 2

7

注册通知。

 [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(textChanged:)
                                              name:UITextFieldTextDidChangeNotification
                                            object:YOUR_TEXT_FIELD];
于 2012-07-25T05:07:41.487 回答
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.
}
于 2012-07-25T05:10:40.613 回答