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

Ограничения для UITextField на ввод текста На сайтах обычно это реализуется с помощью JS-скриптов, которые, теоретически, могут быть оключены пользователем на глобальном уровне, и все ограничения, реализованные с помощью JS перестанут действовать.

В iOS-приложении пользователь ничего отключить не сможет :)

Дале - примеры кода...

 

 

Ограничение для ввода в UITextField - разрешить только цифры: 

 

    func onlyDigitsAllowed(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        guard CharacterSet(charactersIn: "0123456789").isSuperset(of: CharacterSet(charactersIn: string)) else {

            return false

        }

        return true

    }

 

 

Ограничение для ввода в UITextField - по количеству символов:

   

@IBAction func digitLimitSize(_ sender: UITextField) {

        if sender.text!.lengthOfBytes(using: String.Encoding.utf8) > 2 {

            sender.text = String(sender.text!.prefix(2))

        }

    }

В данном примере - это 2-значное число.

Ограничение настроено на событие Editing Changed.

Ограничения для UITextField на ввод текста - количество символов 

 

 

Ограничение для ввода числа в UITextField - задать диапазон чисел от 1 до ХХХ

Добавить во ViewController 3 строчки - объявить 1 переменную и 2 константы:

 

class ViewController: UIViewController {


let minValue = 1
let maxValue = 99
lazy var valuesRange = minValue...maxValue

// остальной код приложения:

}

 

После кода ViewController добавить расширение (Extension):

 

extension ViewController {

     func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

       let newText = NSString(string: textField.text!).replacingCharacters(in: range, with: string)

       

       if newText.isEmpty {

         return true

       }

       

       return valuesRange.contains(Int(newText) ?? minValue - 1)

   }

}

Минусы данного варианта:

1. Минимальное число всегда должно быть единица (1), иначе не получится ввести двузначное число, начинающееся на цифру менее minValue (например, если установаить minValue = 3, то никто не сможет ввести в текствое поле числа 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29). Если для функционала приложения разрешенный диапазон чисел должен начинаться с 1, то данное ограничение не будет влиять на работу.

2. Данное ограничение будет распространяться на все текстовые поля (UITextField). Чтобы такого не было, придется немного дополнительно поколдовать с кодом.

 

 

Комментарии (0)

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

  1. Опубликовать комментарий как Гость.
0 Значки
Вложения (0 / 3)
Поделитесь своим местоположением

      301 редирект страницы с параметром с помощью .htaccess
      301 редирект страницы с параметром с помощью .htaccess

      В интернете написано много примеров, как настроить с помощью файла .htaccess переадресацию с одной конкретной страницы сайта на другую, с нескольких страниц на одну, с WWW на без WWW, с HTTP на HTTPS и др. Но нормальных примеров для 301 редиректа с использованием страниц, имеющих параметры, не удалось найти. Как-то просматривая логи сайта https://skalolaskovy.ru, были обнаружены левые попытки авторизации...




      Apple закрывает программы развертывания DEP и VPP
      Apple закрывает программы развертывания DEP и VPP

      Программы развертывания Apple - Device Enrollment Program (DEP) и Volume Purchase Program (VPP) с 1 декабря 2019 года перестанут существовать. Deployment Programs - DEP и VPP будут объединены в одну и их заменит единая программа - Apple Business Manager (для коммерческих компаний) и Apple School Manager (для образовательных учреждений). Для того, чтобы продолжить использование программой регистрации устройств (DEP) и программой...




      Фразы про ЛИЦО (FACE)
      Фразы про ЛИЦО (FACE)

      Выражения, в которых используется слово ЛИЦО (face), использование их в повседневной речи и сравнение с русскими аналогами.   1. FACE THE MUSIC (досл.: «встретить музыку») По-русски это означает: держать ответ за что-либо, расплачиваться, "расхлёбывать кашу".Пример: You’ve made a mistake; now you’ll have to face the music.Ты совершил ошибку, теперь тебе придется за нее расплачиваться.




      Как восстановить языковую панель Windows 7
      Как восстановить языковую панель Windows 7

      Два раза у моего товарища случалась эта беда - куда-то бесследно пропадала панель языков из системного трея. Что он с ней делал? Случайно это получалось, или же происходил какой-то глюк системы после некорректного удаления кривого софта? - уже не известно :) Факт только один - языковая панель пропала и ее нет на месте. Перезагрузка не помогает, значит - это не разовый глюк, а что-то посерьезнее. С одой стороны...




      Про НОТАМы
      Про НОТАМы

      НОТАМы (NOTAM = NOTice for Air Men) - это существенные изменения в аэронавигационной обстановке. Международные НОТАМы распространяются из мест их издания по всему миру. Некоторые страны издают также региональные (внутренние) НОТАМы, которые доступны обычно только для эксплуатантов своей страны. НОТАМы дополняют сборники аэронавигационной информации и обеспечивают актуализацию аэронавигационной информации через...




      Как быстро сменить IP-адрес?
      Как быстро сменить IP-адрес?

      Эта статья предназначена в первую очередь для корпоративных пользователей компьютеров одной локальной сети, имеющие возможность работать в этой самой сети с различными IP-адресами. Эти адреса нужно заранее знать, получив от системного администратора. Для домашних пользователей Интернета (клиентов всяких Корбин, СТСов, Дарсов и прочих) эта информация абсолютно не нужна, т.к. эти пользователи либо жестко привязаны к...




      Ошибка http/1.1 413 request entity too large
      Ошибка http/1.1 413 request entity too large

      Загрузка файлов на сайт (а по сути - на сервер) обычно выполняется через POST-запрос или UPLOAD-запрос. Но это актуально только для тех  сайтов, для которых на сервере используется Appache. Но если на сервере используется NGINX (CGI или FAST CGI), то максимально допустимый размер тела запроса определяется по-другому - директивой client_max_body_size. По умолчанию директива client_max_body_size имеет...



Яндекс.Метрика
Сайт работает на быстром VPS/VDS хостинге от FASTVPS