在Swift中,我为文本字段添加了红色边框。我想实现的是,如果我们在其中输入任何文本,文本字段的边框颜色应该被删除,如果其中再次没有文本,边框颜色应该再次设置为红色。无需点击任何按钮。(仅限编程)
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 } }
osh3o9ms2#
这将有助于:
if self.yourTextField.text.isEmpty { self.yourTextField.layer.borderColor = UIColor.red.cgColor self.yourTextField.layer.borderWidth = 1 } else { self.yourTextField.layer.borderWidth = 0 }
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))
3条答案
按热度按时间ve7v8dk21#
你可以用下面的简单代码来完成这个。在你的viewdidload或view configure方法中添加下面的行
根据需要更改文本字段边框颜色或删除边框
osh3o9ms2#
这将有助于:
mjqavswn3#
Xcode 14 /斯威夫特5.7:
设置一个绑定变量并使用.onChange修饰符和一个包含一个形状(即RoundedRectangle)的.overlay修饰符来更改“border”颜色。您还需要使用.textFieldStyle(PlainTextField())修饰符。