#swift
#swift
Вопрос:
Мне нужно указать максимальное значение для текстового поля. Я уже получил ответ из другого сообщения о том, как ограничить UITextField только числами. Но я хотел бы изменить эту функцию, чтобы она принимала только число от 0 до 540.
Есть ли какой-либо способ изменить эту функцию?
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let s = NSString(string: textField.text ?? "").replacingCharacters(in: range, with: string)
guard !s.isEmpty else { return true }
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .none
return numberFormatter.number(from: s)?.intValue != nil
}
Ответ №1:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
print(string)
let myRange = 0...540
//ro delete/remove values in textField
if string == "" {
return true
}
let fullText = NSString(string: textField.text ?? "").replacingCharacters(in: range, with: string)
if let wholeNumber = Int(fullText), myRange.contains(wholeNumber) {
return true
}
return false
}
Ответ №2:
Вы можете проверить, находится ли число между 0 и 540.
if let number = numberFormatter.number(from: s)?.intValue {
return number > 0 amp;amp; number < 540
} else {
return true
}