我的静态 TableView 有两组单独的字段:
Group 1
Row 1: UITextField - emailOne
Row 2: UITextField - confirmEmailOne
Group 2
Row 3: UITextField - emailTwo
Row 4: UITextField - confirmEmailTwo
我想根据下一个逻辑更改字段的颜色:然后我在 emailOne 中输入一个字符,它应该立即检查它是否等于 confirmEmailOne 字段的文本。如果不是 - 它应该突出两个字段:emailOne 和 confirmEmailOne。我将电子邮件字段连接到 Storyboard :
@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
但它无论如何都没有改变。
最佳答案
我建议将断点添加到您在 textFieldDidChange 中设置 textColors 的位置,并在索引处设置 po checkedArray 的 textColor 并查看某个点的颜色。
从那里你可以弄清楚为什么它没有改变颜色以及颜色改变的确切点。
关于ios - 更改两个文本字段的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48544478/