(1)要检测文本框内容的变化,我们需要让新界面的Controller遵循一个文本协议 UITextFieldDelegate。
同时在 viewDidLoad 方法内将文本框的代理设置为当前实例。
然后实现 textField 的 shouldChangeCharacters 方法就能在文本框将要变化的时候执行一些代码。
(2)但这个只是将要变化时执行,而不是变化后。比如在这个方法内打印出文本框的内容,会发现每当我们改变文本框的内容时,打印出来的是上一次的内容。
比如先输入1,打印出来是空。再输入2,文本框上是12,但打印出来却是1.
常规的方法:
(1)代理方法里面字符串替换
(2)观察者的方式
简易方法:
给TextField添加事件,响应输入框的编辑事件(allEditingEvents)就可以获取最新的内容。
textfield.addTarget(self, action: #selector(textChange(_:)), for: .allEditingEvents)
@objc func textChange(_ textField: UITextField) {
print(textfield.text ?? "")
}
妈妈再也不用担心输入框头疼的问题了。
网友评论