错误?通过UITextFieldDelegate的UILabel现场更新是关闭的一个字符
这里是一个示例应用程序,以证明我碰到了这个问题:错误?通过UITextFieldDelegate的UILabel现场更新是关闭的一个字符
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var aTextField: UITextField!
@IBOutlet weak var aTextLbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
aTextField.delegate = self
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
aTextLbl.text = aTextField.text
return true
}
}
这里是一个演示:
我的问题是,如何使它与我在文本框中输入的内容完全同步?谢谢!
而不是使用代理方法shouldChangeCharactersIn
,您可以使用EditingChanged
如下。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var aTextLbl: UILabel!
@IBOutlet weak var aTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func editingChanged(_ sender: UITextField) {
aTextLbl.text = aTextField.text
}
}
感谢您的快速响应!你能不能更具体一点,我找不到有关键字“EditingChanged”的函数。谢谢! –
更新了我的答案。 – Lawliet
今天早些时候我尝试了“Value Changed”,它没有奏效。但“编辑改变”的作品真的很棒!谢谢! –
你可以做到这一点使用UITextFieldDelegate功能以及。
您需要手动添加字符串的TextField.text值象下面这样:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let currentText = txtFldPassword.text
let newText = (currentText! as NSString).replacingCharacters(in: range, with: string)
print(newText)
return true
}
见例如https://stackoverflow.com/questions/28394933/how-do-i-check-when-a-uitextfield-changes。 –