UITextField编辑已更改未调用

时间:2018-04-19 10:08:19

标签: ios swift

我有UITextField zipTextField 并使用UIPicker来更改文字。我想知道 zipTextField 何时更改。

我把这个程序放在我的ViewController

@IBAction func textFieldEditingDidChange(sender: AnyObject){
    print("textField:\(zipTextField.text)")
}

使用修改已更改事件连接到视图 connect to the view

但是当 zipTextField 发生变化时,该功能没有调用

否则,当我将textFieldEditingDidChange连接到编辑完成编辑已开始 textFieldEditingDidChange 将被调用

4 个答案:

答案 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发送回您的观察者。