选中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
}

因此,如果要使用这些方法,请不要忘记在delegate中设置TextField的viewDidLoad属性。
email.delegate = self
password.delegate = self
userName.delegate = self

也不要忘记实现UITextFieldDelegate协议
class ViewController: UIViewController, UITextFieldDelegate

10-08 07:31