选择时如何更改uitextfield边框

时间:2018-12-08 13:21:21

标签: ios swift uitextfield

当我选择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)
    }
}

2 个答案:

答案 0 :(得分:1)

您可以这样做:

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标记并相应地设置颜色。

答案 1 :(得分:0)

如果要在用户开始键入时突出显示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