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

Ограничения для 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)
Поделитесь своим местоположением

      Контакты в iPhone - управление, копирование, восстановление
      Контакты в iPhone - управление, копирование, восстановление

      Многие пользователи яблочных девайсов радостно эксплуатируют их и не задумываются о том, что очень желательно на всякий случай периодически делать резевную копию всех контактов. Лично я несколько лет назад был свидетелем ситуации, когда одна девушка-красавица во время проведения международного автмобильного ралли легкомысленно обновила операционную систему своего iPhone до какой-то очередной iOS XXX, но что-то...




      Как отобразить html, php-код или Java-скрипт на странице в Joomla с помощью плагина Sourcerer
      Как отобразить html, php-код или Java-скрипт на странице в Joomla с помощью плагина Sourcerer

      Иногда бывает необходимо отобразить HTLM-код (или PHP-код или java-скрипт) в статье на сайте. Обычно текстовый редактор нещадно обрезает все теги и скрипты, и создателю статьи приходится делать скриншот кода и вставлять его как картинку. С одной стороны это просто и надежно - вставить легко и код не может повредиться, пока жива сама картинка. Но для посетителей сайта такая ситуация не очень приятная...




      Блокнот копирайтера
      Блокнот копирайтера

      Старый добрый прикол, пусть будет в коллекции... Наконец-то нашел время и перенес его со старого сайта и поставил там редирект с помощью JS.




      Как добраться из Шонефельда в Тегель
      Как добраться из Шонефельда в Тегель

      Путешествуя по Европе, довольно часто приходится планировать свой маршрут через Германию, например, получив немецкий шенген, едешь в Швейцарию или в Прагу. Не всегда получается первоочередно поехать в ту страну, визу которой получил. Если "точка входа" в шенген - Германия, то чаще всего транзитным пунктом становится Берлин. Из России в Берлин можно прилететь в аэропорт Шонефельд (Schönefeld), а вот дальше...




      Обновление БД EGPWS T2CAS
      Обновление БД EGPWS T2CAS

      БД для EGPWS/TAWS "T2CAS" предоставляется компанией ACSS (Aviation Communication and Surveillance System) в своем бортовом формате, конвертация уже выполнена, и БД готова для загрузки в систему. Периодичность обновления – по факту выхода новой БД (примерно кардые 3 месяца). Сроки не совпадают с циклами AIRAC. При этом зарегистрированным пользователям на электронную почту приходит уведомление о том, что новая БД...




      Глюки iPad. Экран сам работает
      Глюки iPad. Экран сам работает

      Новый планшет iPad mini, купленный в Америке, почти сразу при эксплуатации начал себя плохо вести - периодически он жил своей жизнью: менял масштаб экрана, запускал приложения, переходил по ссылкам в браузере, набирал текст на виртуальной клавиатуре... Его владелец - любитель мистики и эзотерики - относил этот глюк к вмешательству потусторонних сил, как, помните, в фильме Джерри Цукера...




      Как учить авиационный английский
      Как учить авиационный английский

      Кому-то иностранные языки даются легко, кому-то не очень. Но мировая тенденция популяризации английского языка наблюдается уже довольно давно. Англичане по идее должны гордиться, что их язык выбран в качестве основного иностранного языка, который изучают по умолчанию. Не смотря на то, что официальными языками ИКАО являются в том числе и немецкий, французский и даже русский языки и другие..., фразеология...



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