Я хочу принимать только буквы от А до Я в моем текстовом поле. И не принимайте цифры в swift 5

#swift #textfield

#swift #текстовое поле

Вопрос:

я создал текстовое поле имени пользователя, и я хочу, чтобы мое текстовое поле не принимало числа в swift 5

я пробовал этот bud, но он не работал

 func OnlyCharacter(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
 let allowedcharacters = CharacterSet.decimalDigits
 let characterset = CharacterSet(charactersIn: string)
 return allowedcharacters.isSuperset(of: characterset)

 }
 

Ответ №1:

Вам нужно изменить только CharacterSet.decimalDigits на NSCharacterSet.letterCharacterSet()

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    if string.rangeOfCharacter(from: .letters) != nil {
        return true
    } else {
        return false
    }
}
 

Ответ №2:

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    let non_digits = NSCharacterSet.letters.inverted
    let range = string.rangeOfCharacter(from: non_digits)
    if range != nil { // found an invalid
        return false
    }
    return true
}
 

Комментарии:

1. Пожалуйста, не отвечайте только кодом, добавьте некоторый контекст относительно того, как этот ответ решает вопрос. Это полезно не только для OP, но и для будущих читателей этого вопроса и ответов

Ответ №3:

  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
      let characterSet = CharacterSet.letters //accept letters only here
      if string.rangeOfCharacter(from:characterSet.inverted) != nil {
      return false
    }
    return true
 }
 

Комментарии:

1. Пожалуйста, не отвечайте только кодом, добавьте некоторый контекст относительно того, как этот ответ решает вопрос. Это полезно не только для OP, но и для будущих читателей этого вопроса и ответов