【发布时间】:2017-06-26 21:49:04
【问题描述】:
我在文本字段旁边有一个 UIImage。如果文本字段通过格式测试,我希望图像更改(检查)。所以,如果输入了六个字符,图像就会改变。我尝试使用 textFieldDidChange 但我认为只有在第一次更改字段时才会调用此函数。是否有一个我可以使用的函数,每次输入一个字符时都会调用它?有没有更好的方法?
【问题讨论】:
我在文本字段旁边有一个 UIImage。如果文本字段通过格式测试,我希望图像更改(检查)。所以,如果输入了六个字符,图像就会改变。我尝试使用 textFieldDidChange 但我认为只有在第一次更改字段时才会调用此函数。是否有一个我可以使用的函数,每次输入一个字符时都会调用它?有没有更好的方法?
【问题讨论】:
对编辑更改的事件使用操作。这可以通过 IBAction 或手动添加目标来完成。
IBAction
在您的视图控制器中添加此方法,并将插座连接到您的 xib 或情节提要中的 editingChanged 事件:
@IBAction func textFieldChanged(_ sender: UITextField) {
// Your code here
}
添加目标
override func viewDidLoad() {
super.viewDidLoad()
yourTextField.addTarget(self, action: #selector(textFieldChanged(_:)), for: .editingChanged)
}
func textFieldChanged(_ sender: UITextField) {
// Your code here
}
【讨论】:
根据Apple's documentation。在讨论部分,它说,
每当用户操作导致其文本发生更改时,文本字段都会调用此方法。使用此方法验证用户键入的文本。
“这个方法”指的是textField(_:shouldChangeCharactersIn:replacementString:)
这是完整的方法:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
<code>
}
【讨论】: