#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, но и для будущих читателей этого вопроса и ответов