ios 如果文本字段为空,则将边框设置为红色,如果输入文本,则删除红色边框

oxf4rvwz  于 2022-12-05  发布在  iOS
关注(0)|答案(3)|浏览(171)

在Swift中,我为文本字段添加了红色边框。我想实现的是,如果我们在其中输入任何文本,文本字段的边框颜色应该被删除,如果其中再次没有文本,边框颜色应该再次设置为红色。无需点击任何按钮。(仅限编程)

ve7v8dk2

ve7v8dk21#

你可以用下面的简单代码来完成这个。在你的viewdidload或view configure方法中添加下面的行

textField.addTarget(self, action: #selector(ViewController.textFieldDidChange(_:)), for: .editingChanged)

根据需要更改文本字段边框颜色或删除边框

@objc func textFieldDidChange(_ textField: UITextField) {
        if (textField.text!.isEmpty)
        {
            // change your textfield border color
        }
        else
        {
            // remove text field border or change color
        }
    }
osh3o9ms

osh3o9ms2#

这将有助于:

if self.yourTextField.text.isEmpty
{
   self.yourTextField.layer.borderColor = UIColor.red.cgColor
   self.yourTextField.layer.borderWidth = 1
}
else
{
   self.yourTextField.layer.borderWidth = 0
}
mjqavswn

mjqavswn3#

Xcode 14 /斯威夫特5.7:
设置一个绑定变量并使用.onChange修饰符和一个包含一个形状(即RoundedRectangle)的.overlay修饰符来更改“border”颜色。您还需要使用.textFieldStyle(PlainTextField())修饰符。

@State private var isTitleMissing: Bool = true
@State private var inputTitle: String = ""
            
TextField("Insert Title", text: $inputTitle)
    .textFieldStyle(PlainTtextFieldStyle())
    .onChange(of: inputTitle) { _ in
        isTitleMissing = inputTitle.isEmpty
    }
    .overlay(RoundedRectangle(cornerRadius: 16).stroke(isTitleMissing ? Color.red : Color.gray))

相关问题