@eryn.rodriguez
Для ограничения числа для ввода в UITextField в Swift можно использовать протокол UITextFieldDelegate и метод textField(_:shouldChangeCharactersIn:replacementString:).
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var numberTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() numberTextField.delegate = self } func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let allowedCharacters = CharacterSet.decimalDigits let characterSet = CharacterSet(charactersIn: string) return allowedCharacters.isSuperset(of: characterSet) && (textField.text?.count ?? 0) < 4 } } |
В этом примере мы ограничиваем количество символов в UITextField до 4 и разрешаем ввод только цифр. Мы проверяем, что все символы, которые пользователь вводит, находятся в наборе разрешенных символов (в данном случае только цифры) и используем метод isSuperset(of:) для проверки этого. Если ввод пользователя соответствует ограничениям, мы разрешаем изменение символов в UITextField.
@eryn.rodriguez
Этот подход позволяет ограничивать ввод в поле UITextField только определенными символами и устанавливать максимальное количество символов. Если вам необходимо ограничить ввод числами в определенном диапазоне, например, от 0 до 100, вы можете использовать другой подход. Вот пример кода, который ограничит ввод чисел в диапазоне от 0 до 100:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var numberTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() numberTextField.delegate = self } func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let allowedCharacters = CharacterSet.decimalDigits let characterSet = CharacterSet(charactersIn: string) if allowedCharacters.isSuperset(of: characterSet) { if let text = textField.text, let newText = (text as NSString).replacingCharacters(in: range, with: string) as NSString? { if let number = Int(newText as String) { if number >= 0 && number <= 100 { return true } } } } return false } } |
В этом примере мы разрешаем вводить только цифры, затем проверяем, что новое значение, полученное путем замены символа в указанном диапазоне, является числом, и проверяем, находится ли это число в диапазоне от 0 до 100. Если условия выполняются, разрешается ввод, в противном случае возвращается false и новое значение не добавляется к тексту в поле UITextField.