【问题标题】:Validate Entry In TextField验证文本字段中的条目
【发布时间】:2016-11-16 18:33:33
【问题描述】:

我有一个文本字段,允许用户输入文本并将此文本保存到变量中并将其存储在用户默认值中。我需要输入是一个字符串,因此我需要文本字段来检测输入不是字符串。我该怎么做?

【问题讨论】:

  • 你认为文本字段中的字符串是什么?
  • 该文本字段中的所有内容都是一个字符串。您需要确定您认为有效字符串的规则,并与这些规则进行比较。
  • 我已经改写了问题名称以澄清;我需要从本质上验证输入以检查它是一个字符串(不能是整数/双精度,例如 5 或 5.3)
  • 您的文本字段中只需要字母字符?
  • 是的,它需要按字母顺序排列 @Rajat,因为文本字段用于输入名称。顺便说一句,textfielf 在警报控制器中

标签: ios swift string uitextfield textfield


【解决方案1】:

你可以使用这个代码

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let characterSet = NSCharacterSet.letters
    return (string.rangeOfCharacter(from: characterSet) != nil)
}

确保您已为您的textfield 正确设置delegate

【讨论】:

  • 我知道这个解决方案会被反复使用,但这确实是一种非常低效的验证字符串中字符的方法。
  • @rmaddy 这个解决方案有什么问题。我是菜鸟:)
  • 将整个字符串拆分成一个数组,然后将所有数组元素重新组合成一个字符串,然后比较两个字符串只是为了查看原始字符串是否包含有效字符,这是非常低效的。跨度>
【解决方案2】:

试试这个代码。希望对你有帮助。

func updateSaveButtonState() {
    let text = titleTextField.text ?? ""
    saveButton.isEnabled = !text.isEmpty
}


@IBAction func textEditingChanged(_ sender: UITextField) {
    updateSaveButtonState()
}

@IBAction func returnPressed(_ sender: UITextField) {
    titleTextField.resignFirstResponder()
}

【讨论】:

    【解决方案3】:

    试试下面的代码:swift 4.0

    func validateOnlyLetters(text: String) -> Bool {
        let characterSet = CharacterSet.decimalDigits
        return (text.rangeOfCharacter(from: characterSet) == nil)
    }
    

    【讨论】:

      【解决方案4】:

      默认情况下,textField.text 属性是一个字符串。 如果您不希望用户输入任何数字,您可以参考post 在保存到 userdefaults 之前验证输入。

      另一个 Swift 帖子 - How can I check if a string contains letters in Swift?

      let letters = NSCharacterSet.letterCharacterSet()
      
      let phrase = "Test case"
      let range = phrase.rangeOfCharacterFromSet(letters)
      
      // range will be nil if no letters is found
      if let test = range {
          println("letters found")
      }
      else {
         println("letters not found")
      }
      

      【讨论】:

      • 是的,这正是我所需要的;在保存之前验证输入。该帖子是在Objective C中,但是我正在使用swift并且不理解它
      • 参考这篇文章
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2018-11-28
      • 2019-04-24
      • 2012-06-24
      • 2011-12-01
      相关资源
      最近更新 更多