我创建了一个我在整个应用程序中使用的自定义textField类,但我想知道如何在每次选择字段时将边框颜色改为红色。而不必在每个视图控制器上实现一个委托。 上显示的文本字段。
有没有办法在创建textField子类时覆盖一个标准函数?对于按钮,我成功地使用了下面的代码,但是isHighlighted对于文本字段不起作用,而且看起来我不能覆盖isEditing。
override var isHighlighted: Bool {
didSet {
backgroundColor = isHighlighted ? .red : .blue
}
}
在你的 UITextField
子类,你可以覆盖 becomeFirstResponder
和 resignFirstResponder
并在那里进行更改。
class YourTextFieldSubclass: UITextField {
override func becomeFirstResponder() -> Bool {
let didBecomeFirstResponder = super.becomeFirstResponder()
if didBecomeFirstResponder {
layer.borderColor = UIColor.red.cgColor
layer.borderWidth = 2
layer.cornerRadius = 5
}
return didBecomeFirstResponder
}
override func resignFirstResponder() -> Bool {
let didResignFirstResponder = super.resignFirstResponder()
if didResignFirstResponder {
layer.borderColor = UIColor.clear.cgColor
layer.borderWidth = 0
layer.cornerRadius = 0
}
return didResignFirstResponder
}
}
一定要打电话 super
并为这两个重载方法返回该值,如上例。