如何检测UITextfield中文本的更改?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

如何检测UITextfield中文本的更改?

提问于
用户回答回答于

利用UITextFieldTextDidChange通知或在文本字段上设置委托并查看textField:shouldChangeCharactersInRange:replacementString。

如果你想通过通知来观察变化,你需要在你的代码中注册这样的通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:theTextField];

这里的TextField是你想要观察的UITextField的实例。上面的代码中self是实例的类必须实现textFieldDidChange,如下所示:

- (void)textFieldDidChange:(NSNotification *)notification {
    // Do whatever you like to respond to text changes here.
}

如果文本字段超过observer,,那么必须注销observer的dealloc方法中的通知。

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    // Other dealloc work
}
用户回答回答于

不是obser通知或实现textField:shouldChangeCharacterInRange:replacementString :,只需添加一个事件目标:

[textField addTarget:self
              action:@selector(myTextFieldDidChange:)
    forControlEvents:UIControlEventEditingChanged];

- (void)myTextFieldDidChange:(id)sender {
    // Handle change.
}

请注意,该事件是UIControlEventEditingChanged而不是UIControlEventValueChanged!

扫码关注云+社区