我是新手...... 我有一个文本字段和一个标签...如果文本字段和标签文本中的消息不相等,我想更改标签颜色。 这是我的开始:
@IBAction func tapMeButton(_ sender: Any) {
label.text = txtField.text
}
我该怎么做?
答案 0 :(得分:2)
将此行添加到viewDidLoad
textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
和
@objc func textFieldDidChange(_ textField: UITextField) {
if(label.text != txtField.text)
{
label.textColor = UIColor.red
}
}
@IBAction func tapMeButton(_ sender: Any) {
label.text = txtField.text
}
答案 1 :(得分:1)
UITextField提供委托方法,您可以使用此代码检查两者的值是否相同。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let nsString = textField.text as NSString?
let newString = nsString?.replacingCharacters(in: range, with: string)
if(self.lbl.text != newString) {
self.lbl.textColor = UIColor.red
}
else {
self.lbl.textColor = UIColor.green
}
return true;
}
答案 2 :(得分:0)
首先添加用于获取文本更改的目标。
textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
func textFieldDidChange(_ textField: UITextField) {
if(label.text != textField.text)
{
label.textColor = UIColor.red
}
}
答案 3 :(得分:0)
要做到这一点,你必须更多地了解文本域,
每个文本字段都带有委托方法,可以围绕它执行各种功能。 首先在viewDidLoad方法中,像这样添加委托
yourTextField.delegate = self
通过添加textFieldDelegate添加其扩展名来添加委托方法。它将实时为您提供文本,同时用户开始输入,甚至在添加到textField
之前extension YourViewController:UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if let text = textField.text as NSString? {
let txtAfterUpdate = text.replacingCharacters(in: range, with: string)
if txtAfterUpdate == label.text {
label.backgroundColor = UIColor.red
} else {
label.backgroundColor = UIColor.black
}
}
return true
}
}