UITextField值更改事件?

Chr*_*art 54 iphone uitextfield

我怎样才能使文本字段的内容发生变化时调用一个函数?

kov*_*pas 132

Objective-C的

[myTextField addTarget:self 
                action:@selector(textFieldDidChange:) 
      forControlEvents:UIControlEventEditingChanged];
Run Code Online (Sandbox Code Playgroud)

斯威夫特4

myTextField.addTarget(self, action: #selector(textFieldDidChange(sender:)), for: .editingChanged)

@objc func textFieldDidChange(sender: UITextField) {...}
Run Code Online (Sandbox Code Playgroud)

  • 奇怪的是,基于UIControlEventDidEnd和UIControlEventDidBegin,可以假设它是UIControlEventValueChanged ......那么UIControlEventValueChanged究竟做了什么? (21认同)

Dmi*_*nko 21

实际上UITextField,使用没有值变更事件UIControlEventEditingChanged


Pau*_*uls 8

我解决了改变shouldChangeChractersInRange行为的问题.如果您返回NO,iOS内部将不会应用更改,您可以手动更改它并在更改后执行任何操作.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    //Replace the string manually in the textbox
    textField.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
    //perform any logic here now that you are sure the textbox text has changed
    [self didChangeTextInTextField:textField];
    return NO; //this make iOS not to perform any action
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,设置text属性会将光标移动到文本末尾,这可能会影响编辑 (4认同)