我如何使我的textField边框在每次选择它时都改变为不同的颜色?

问题描述 投票:0回答:1

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

有没有办法在创建textField子类时覆盖一个标准函数?对于按钮,我成功地使用了下面的代码,但是isHighlighted对于文本字段不起作用,而且看起来我不能覆盖isEditing。

override var isHighlighted: Bool {
    didSet {
        backgroundColor = isHighlighted ? .red : .blue
    }
}
swift uitextfield uitextfielddelegate
1个回答
1
投票

在你的 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 并为这两个重载方法返回该值,如上例。

© www.soinside.com 2019 - 2024. All rights reserved.