0

我在一个类中有一个按钮,在另一个类中有一个文本字段。我的目标是实现这一点:当 textField 为空时,按钮被隐藏,然后我向 textField 添加数字(它有 4 个数字),按钮变得可见。

我将目标添加到我的按钮:

let confirmButton: UIButton = {
let button = UIButton()

button.setTitle("Confirm", for: .normal)
button.layer.borderWidth = 1
button.layer.borderColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)

button.translatesAutoresizingMaskIntoConstraints = false
button.addTarget(self, action: #selector(confirmation.textFieldDidEndEditing(_:)), for: .editingDidBegin)
return button

}()

并在另一个类中创建这个函数:

@objc func textFieldDidEndEditing(_ textField: UITextField) {
  if textField.text != "" {
  button.confirmButton.isHidden = false
  } else {
    button.confirmButton.isHidden = true
  }

但什么都没有改变。请帮助我,我必须做什么才能实现我的目标?

4

1 回答 1

0

使用 textField 的委托方法

class MyViewController: UIViewController, UITextFieldDelegate {
    lazy var confirmButton: UIButton = {
        let button = UIButton()
        button.setTitle("Confirm", for: .normal)
        button.layer.borderWidth = 1
        button.layer.borderColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
        button.isHidden = true // You probably want it to hidden first
        button.translatesAutoresizingMaskIntoConstraints = false
        return button
    }()

    lazy var textField = UITextField()

    override func viewDidLoad() {
        super.viewDidLoad()
        textField.delegate = self // Don't forget to set delegate
    }

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
        confirmButton.isHidden = newString.isEmpty
        return true // OR return newString.count <= 4 if you want to limit to maximum 4 characters/digits
    }
}
于 2020-12-16T14:27:34.950 回答