如何让我的 textField 边框在每次被选中时更改为不同的颜色?

How do I make my textField border change to a different color every-time it is selected?

我创建了一个我在整个应用程序中使用的自定义文本字段 class,但我想知道如何在每次选择字段时将边框颜色更改为红色 无需在显示文本字段的每个视图控制器 上实现委托。

在我创建 textField subclass 时,有没有办法覆盖标准函数?对于按钮,我成功使用了以下代码,但 isHighlighted 不适用于 textFields,而且我似乎无法覆盖 isEditing:

override var isHighlighted: Bool {
    didSet {
        backgroundColor = isHighlighted ? .red : .blue
    }
}

在您的 UITextField 子类中,您可以覆盖 becomeFirstResponderresignFirstResponder 并在那里执行更改:

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 和 return 为上述示例中的两个重写方法调用该值。