有没有办法在用户开始输入时隐藏 UILabel,然后在用户删除所有输入时让它重新出现?

Is there a way to hide a UILabel when the user starts typing, and then make it re-appear if the user removes all input?

我正在尝试实现一个搜索字段,您可以在其中输入一些字符以显示 "possible searches"。一开始,文本框下方有一个小文本,上面写着 "make sure to capitalize letters"。这只是一个 UILabel。当用户开始输入时,我想制作此标签 "disappear"。但是如果用户退格足以删除所有文本 - 我希望标签再次出现。

文本框是由 UITextField 制作的。

这一切都存储在一个视图中。

有没有人知道如何实现这样的东西?

您可以使用这样的选择器将目标添加到您的 textFiled

  1. 将此目标添加到您的 viewDidLoad 方法中
yourTextFiled.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: UIControl.Event.editingChanged)
  1. 在您的 viewDidLoad 方法下方创建这样的选择器方法并设置 if textfield.text.isEmpty 而不是像这样隐藏标签
    @objc func textFieldDidChange(_ textField: UITextField) {
        if textField.text!.isEmpty {
            label.isHidden = false
        } else {
            label.isHidden = true
        }
    }

希望你得到你想要的东西!

您可以通过文本字段委托方法 shouldChangeInCharacter 执行此操作并检查文本字段何时为空将标签 isHidden 属性 设置为 false 否则太正确。

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
       if let text = textField.text {
          if text.isEmpty {
            label.isHidden = false
        }
        else {
           label.isHidden = true
        }
    }
    return true
}

希望对您有所帮助。编码愉快!