代码之家  ›  专栏  ›  技术社区  ›  Christian Stewart

UITextField值更改事件?

  •  51
  • Christian Stewart  · 技术社区  · 14 年前

    如何使其在文本字段的内容发生更改时调用函数?

    5 回复  |  直到 11 年前
        1
  •  133
  •   kovpas    6 年前

    目标C

    [myTextField addTarget:self 
                    action:@selector(textFieldDidChange:) 
          forControlEvents:UIControlEventEditingChanged];
    

    myTextField.addTarget(self, action: #selector(textFieldDidChange(sender:)), for: .editingChanged)
    
    @objc func textFieldDidChange(sender: UITextField) {...}
    
        2
  •  21
  •   Dmitry Shevchenko    11 年前

    实际上,没有 UITextField ,使用 UIControlEventEditingChanged

        3
  •  8
  •   Pauls    11 年前

    我解决了改变shouldchartersinrange行为的问题。如果返回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
    }
    
        4
  •  1
  •   Vivek Bansal    8 年前

    对斯威夫特来说这很方便-

    textField.addTarget(self, action: #selector(onTextChange), forControlEvents: UIControlEvents.EditingChanged)
    
        5
  •  0
  •   wsnjy    6 年前

    这是我的解决办法。

    textField.addTarget(self, action: #selector(self.textFieldDidChange(sender:)), for: .editingChanged)
    
    @objc func textFieldDidChange(sender: UITextField){
       print("textFieldDidChange is called")
    }