我的静态表视图有两组不同的字段:
Group 1
Row 1: UITextField - emailOne
Row 2: UITextField - confirmEmailOne
Group 2
Row 3: UITextField - emailTwo
Row 4: UITextField - confirmEmailTwo
我想根据下一个逻辑更改字段的颜色:然后我在emailOne中输入一个字符,它应该立即检查它是否等于confirmEmailOne字段的文本。如果不是 - 它应该突出显示两个字段:emailOne和confirmEmailOne。我将电子邮件字段连接到故事板:
@IBOutlet weak var firstEmailOne: UITextField!
@IBOutlet weak var firstEmailTwo: UITextField!
@IBOutlet weak var secondEmailOne: UITextField!
@IBOutlet weak var secondEmailTwo: UITextField!
之后,我在viewDidLoad
的数组中添加了此字段并添加了目标:
comparableArray[firstEmailOne] = 1
comparableArray[firstEmailTwo] = 1
comparableArray[secondEmailOne] = 2
comparableArray[secondEmailTwo] = 2
for row in comparableArray {
row.key.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
}
这里@objc func
:
@objc func textFieldDidChange(_ textField: UITextField) {
let groupOfField = comparableArray[textField]
var checkedArray = [UITextField]()
for row in comparableArray {
if row.value == groupOfField {
checkedArray.append(row.key)
}
}
if checkedArray[0].text == checkedArray[1].text {
// Error here: the color does not change.
checkedArray[0].textColor = UIColor.black
checkedArray[1].textColor = UIColor.black
} else {
// Error here: the color does not change.
checkedArray[0].textColor = UIColor.red
checkedArray[1].textColor = UIColor.red
}
问题:两个字段的颜色都没有变化。它总是在具有当前焦点的字段中发生变化。我试图在checkedArray[0].textColor
中执行DispatchQueue.main
,但无论如何它都没有改变。
答案 0 :(得分:0)
我建议在textFieldDidChange和po checkedArray的textColor中设置textColors的位置添加断点,并查看某个点的颜色。
从那里你可以弄清楚为什么它没有改变颜色和颜色确切变化的确切点。