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

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

      Как узнать IP-адрес сайта
      Как узнать IP-адрес сайта

      В сети интернет есть несколько сервисов, которые могут сообщить IP-адрес сайта. Зачастую, эти сайты кроме ввода имени домена требуют ввести капчу, иногда имя и адрес электронной почты... - вот такая бюрократия! Для того, чтобы определить IP-адрес DNS-сервера, к которому относится сайт, точнее его доменное имя, и без ввода всяких дополнительных даных, существует несколько способов. Самый простой - это через...




      Очередность загрузки операционных систем
      Очередность загрузки операционных систем

      До появления операционных систем Windows Vista и Windows 7 очередность загрузки можно было установить, отредактировав файл C:\boot.ini В висте и семерке это уже не прокатит. Если у вас была установлена операционная система Windows XP, а потом вы дополнительно установили Висту или 7-ку, последняя установленная операционка и будет загружаться первой по умолчанию при включении компьютера.




      Как закачать видео на ipad
      Как закачать видео на ipad

      Какой формат видео поддерживает iPad? На данный момент (лето 2013 года) планшеты iPad поддерживают только 2 формата видеофайлов: 1. MPEG (файлы с расширением *.mp4 и *.m4v) 2. Qick Time (файлы с расширением *.mov) Все другие форматы iPad не поддерживает, и для их просмотра на яблочном планшете необходима конвертация с помощью специальной программы или установка на iPad отдельного приложения для просмотра...




      Фразы про ЧАСТИ ТЕЛА (BODY PARTS)
      Фразы про ЧАСТИ ТЕЛА (BODY PARTS)

      В очередной раз откроем словарик и начнем удивляться смыслу перевода некоторых английских фраз и выражений. Что поделать? - Сленг! Вот вам выражения, в которых используются части человеческого тела (BODY PARTS), использование их в повседневной английской речи и сравнение с русскими аналогами. 1. TO LEND SMB A HAND (досл. «одалживать руку»). По-русски это означает: помогать кому-либо. Пример: This box is heavy....




      Проиндексировать сайт
      Проиндексировать сайт

      Для того, чтобы ваш сайт разные люди могли находить через свои любимые поисковые системы, будь то Яндекс, Гугл, Рамблер и др., нужно, чтобы эти самые поисковые системы проиндексировали ваш сайт. Сами они это делают очень редко, не удивлюсь нисколько, если они это саомостоятельно ВООБЩЕ НИКОГДА не делают. Так вот, поэтому нужно им дать волшебный пендель, а именно - оформить запрос на индексацию. Сроки индексации...




      Как изменить размер шрифта в iPad?
      Как изменить размер шрифта в iPad?

      Если у Вас слабое зрение, но, тем не менее, вы хотите пользоваться планшетом iPad, специально для вас Apple предусмотрел возможность увеличения размера шрифта в Ipad. Но имеются некоторые ограничения: изменение размера шрифта возможно только для сообщений электронной почты, записей календаря и для списка контактов. В остальных приложениях, как от Apple, так и от сторонних разработчиков ПО шрифт не...




      C новым 2016-ым годом!
      C новым 2016-ым годом!

      Всех авиационных специалистов поздравляем с новым 2016-ым годом! Желаем вам безопасных полетов, хорошей погоды и безотказной техники! Для вас открытка от Jeppesen - прикольная схема захода на посадку по GPS:  



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