选择时如何更改uitextfield边框

How to change uitextfield border when selected

当我的 uitextfield 被选中或开始在其中输入一些文本时,如何更改它的边框

我试过了,但它不起作用检查代码

@IBOutlet weak var email: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var userName: UITextField!

这里有什么问题没有错误但什么也没发生

func fieldLayout () {

    if (self.password.isSelected == true) {
        self.password.layer.borderWidth = 4
        self.password.layer.borderColor = #colorLiteral(red: 0, green: 0.8362106681, blue: 1, alpha: 1)
    }
    if (self.email.isSelected == true) {
        self.email.layer.borderWidth = 5
        self.email.layer.borderColor = #colorLiteral(red: 0, green: 0.8362106681, blue: 1, alpha: 1)
    }
    if (self.userName.isSelected == true) {
        self.userName.layer.borderWidth = 5
        self.userName.layer.borderColor = #colorLiteral(red: 0, green: 0.8362106681, blue: 1, alpha: 1)
    }
}

如果您想在用户开始输入时突出显示 TextField,我建议您使用 UITextField 委托方法 textFieldDidBeginEditing 在用户开始输入时进行处理。

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == email {
        textField.layer.borderWidth = 4
        textField.layer.borderColor = // your color
    } else if ...
}

您还可以使用 textFieldDidEndEditing 委托方法在用户完成输入时进行处理

func textFieldDidEndEditing(_ textField: UITextField) {
    textField.layer.borderWidth = // default width
    textField.layer.borderColor = // default color
}

因此,如果您想使用这些方法,请不要忘记在 viewDidLoad 中设置您的 TextFields 的 delegate 属性,例如

email.delegate = self
password.delegate = self
userName.delegate = self

也不要忘记实施 UITextFieldDelegate 协议

class ViewController: UIViewController, UITextFieldDelegate

你可以这样做:

func textFieldDidBeginEditing(_ textField: UITextField) {
       // textField.borderStyle = .line
        textField.layer.borderColor = UIColor.red.cgColor //your color
        textField.layer.borderWidth = 2.0
    }

    func textFieldDidEndEditing(_ textField: UITextField) {
        textField.layer.borderWidth = 0.0
    }

您可以检查 textField 标签并相应地设置颜色。