如何检查文本字段在 Swift 中是否有多个字母?

How to check if textfield has more than one letter in Swift?

我正在 Swift 中的文本字段上工作,我要实现的是禁用导航按钮,除非文本字段中有 0 个字符,并在文本上添加删除按钮如果文本字段中的字母超过 1 个,例如 iOS 默认日历应用程序。

当标题文本字段中没有字母时,栏按钮项“添加”将被禁用。

启用“添加”按钮并在“标题”文本字段中有 1 个以上字母时显示删除按钮。

我查看了文本字段委托方法,我认为我可以通过使用 shouldChangeCharactersIn 方法来实现我正在尝试的方法 (?)

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    // check if there is a letter in the text field
    // if there is, enable the Add button and show delete icon
    // if there is not, disable the add button and hide the delete icon
    return true
}

我想知道是否有其他方法可以实现此功能?我认为每当在文本字段中键入/删除一个字母时,每次都会调用上面的函数,所以我想知道是否有其他方法可以轻松实现这些东西。

 func textFieldDidChangeSelection(_ textField: UITextField) {
    validateTextField(text:textField.tex)
}

您的方法 shouldChangeCharactersIn 有时无法正常工作 所以可以用这个方法 创建一个函数来获取文本并禁用和启用导航栏和删除按钮,如

func validateTextField(text:String) {
  if text.count > 1 {
    textField.clearButtonMode = .whileEditing
  } else if text.count <= 1 {
     textField.clearButtonMode = .never
  } else if text.count < 1 {
     navigationItem.leftBarButtonItem.tintColor = .lightGray
  }

您可以对特定的文本字段文本计数使用故事板方法。

1.Ctrl + Click on the textfield in interface builder.
  1. 从 EditingChanged 拖动到助手视图中的视图控制器内部 class。

3.Name 您的函数(例如“textFieldEditingChanged”)并点击连接。