Я предлагаю использовать regex
, чтобы заблокировать ввод нежелательных символов в UITextField
. Шаблон регулярного выражения - это лучший способ проверки содержимого с максимальными условиями, а не написание логического кода.
UITextFieldDelegate:
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
if let text = textField.text,
let textRange = Range(range, in: text) {
let updatedText = text.replacingCharacters(in: textRange,
with: string)
return validateString(updatedText)
}
return true
}
Проверка:
func validateString(_ string: String?) -> Bool {
let regex = "^[a-zA-Z]{0,15}$"
let predicate = NSPredicate(format:"SELF MATCHES %@", regex)
let isValid = predicate.evaluate(with: string)
return isValid
}
Редактировать
В регулярном выражении мы можем упомянуть диапазон символов в скобках {}
. В данном сценарии мы упомянули {0,15}
как диапазон.
Чтобы узнать больше о шаблонах регулярных выражений, пожалуйста, отметьте https://www.geeksforgeeks.org/write-regular-expressions/