如何检测UITextField何时更改并触发警报?

时间:2018-09-20 14:42:11

标签: ios swift uitextfield

我正在尝试检测用户何时更改输入字段。

我创建了此功能

@objc func textFieldDidChange(_ textField: UITextField) {

    let alert = UIAlertController(title: "Did you bring your towel?", message: "It's recommended you bring your towel before continuing.", preferredStyle: .alert)

    alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: nil))
    alert.addAction(UIAlertAction(title: "No", style: .cancel, handler: nil))

    self.present(alert, animated: true)

}

我这样添加了我的目标

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

我一直收到此错误

  

使用未解决的标识符'textFieldDidChange(passWord:)'

enter image description here

如何防止发生此错误?

3 个答案:

答案 0 :(得分:1)

您的选择器有误...

passWord.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

请参见https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget

答案 1 :(得分:0)

最简单的方法, 只需创建密码文本字段事件即可。

答案 2 :(得分:-1)

无需将密码文本字段传递到其中。下面简单的更改应该可以解决问题。

passWord.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

确保您设置了testfield委托,并且可以使用'textField'找出函数中哪个文本字段已更改

@objc func textFieldDidChange(_ textField: UITextField) {

let alert = UIAlertController(title: "Did you bring your towel?", message: "It's recommended you bring your towel before continuing.", preferredStyle: .alert)

alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "No", style: .cancel, handler: nil))

self.present(alert, animated: true)

}