UITextField Editing Changed 未调用

S.J*_*Lin 4 ios swift

我有一个UITextField zipTextField并用于UIPicker更改文本。我想知道zipTextField 何时更改。

我把这个程序放在我的 ViewController

@IBAction func textFieldEditingDidChange(sender: AnyObject){
    print("textField:\(zipTextField.text)")
}
Run Code Online (Sandbox Code Playgroud)

并通过编辑更改的事件 连接到视图连接到视图

但是当zipTextField改变时函数没有调用

否则,当我连接textFieldEditingDidChangeEditing Did EndEditing Did Begin 时, 将调用textFieldEditingDidChange

小智 17

如果你已经实现了委托方法

textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String)
Run Code Online (Sandbox Code Playgroud)

并返回false,该事件不会被触发。

通常这是因为您尝试手动设置文本字段的值 ( textField.text = newValue) 以阻止用户输入。

如果是这样,您必须添加:

textField.sendActions(for: .editingChanged)
Run Code Online (Sandbox Code Playgroud)

在委托方法中返回之前false和之后textField.text = newValue。这将UIControl Event返回给您的观察者。


小智 3

EditingChanged在行动上。它适用于我的。