我有UITextField
zipTextField 并使用UIPicker
来更改文字。我想知道 zipTextField 何时更改。
我把这个程序放在我的ViewController
@IBAction func textFieldEditingDidChange(sender: AnyObject){
print("textField:\(zipTextField.text)")
}
但是当 zipTextField 发生变化时,该功能没有调用
否则,当我将textFieldEditingDidChange
连接到编辑完成或编辑已开始 textFieldEditingDidChange 将被调用
答案 0 :(得分:2)
在动作上使用EditingChanged
。它适用于我的。
答案 1 :(得分:0)
您说您使用UIPicker
的实例来更改文本,这会让我相信您正在以编程方式更改基于UITextField
valueChanged回调的UIPicker
。以编程方式更改UITextField.text
不会调用委托方法。
答案 2 :(得分:0)
如果委托函数
textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String)
返回false
,
那么在.editingChanged
上设置的函数将不会调用。
答案 3 :(得分:0)
如果您已实现委托方法
textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String)
并返回false
,则不会触发该事件。
通常这是因为您试图手动设置文本字段的值(textField.text = newValue
)来阻止用户输入。
如果是,则必须添加:
textField.sendActions(for: .editingChanged)
在委托方法中返回false
之前和textField.text = newValue
之后。这会将UIControl
Event
发送回您的观察者。