Warning: file_put_contents(/www/wwwroot/go4.iridade.monster/yakpro-po-main/tmp/1781149209_6a2a2e0fe6cbc3.10535309.dat): failed to open stream: No space left on device in /www/wwwroot/go4.iridade.monster/yakpro-po-main/index.php on line 32
Ограничения для UITextField на ввод текста - Авиационные и компьютерные заметки


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

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

      Как добавить самолет в программу Jeppesen FliteStar, FliteMap
      Как добавить самолет в программу Jeppesen FliteStar, FliteMap

      Программа Jeppesen FliteStar/FliteMap позволяет выполнять навигационные расчеты для полета воздушного судна с одного аэродрома на другой. При этом учитываются летно-технические характеристики выбранного воздушного судна. Поэтому для наиболее точных результатов нужно использовать конкретную модель воздушного судна, имеющей правильные ЛТХ.




      Человеческий фактор
      Человеческий фактор

      Когда-то пилотов гражданской авиации воспринимали как героев. Сегодня постоянное стремление обеспечить все более высокий уровень безопасности привело к созданию самолетов, которые по большому счету могут летать без непосредственного участия человека. Именно поэтому катастрофа самолёта Airbus A330-203 (рейс AF447 авиакомпании Air France) в 2009 году, унесшая жизни 228 человек и ставшая знаковым...




      Идентификаторы применения в УПД
      Идентификаторы применения в УПД

      При передаче товаров, подлежащих маркировке, в универсальном передаточном документе (УПД), кроме стандартной бухгалтерской информации о контрагентах, товаре, цене, количестве и пр..., должны фигурировать коды маркировки данных товаров. Но все так просто - эти коды должны быть только в УПД в формате XML, в печатном PDF-файле их не должно быть.




      IT-мемы
      IT-мемы

      Подборка любимых смешных картинок на тему IT, периодически будет дополняться новыми.




      iTunes не синхронизирует программы
      iTunes не синхронизирует программы

      Ситуация: вы подключили свой iPad или iPhone к компьютеру с помощью кабеля. Программа iTunes запустилась сама, или вы ее принудительно запустили, но функция синхронизации приложений (программ) не активна! :( Выражается это в невозможности установить/убрать галочку на Синхронизации приложений - вся станица "Программы" выглядит не активной.




      Режим просмотра документов PDF/A
      Режим просмотра документов PDF/A

      - У тебя акробат стоит?- В последнее время все реже и реже... :( (Анекдот) Иногда при открытии документа PDF можно наблюдать следующую не очень оптимистическую надпись: Открытый файл соответствует стандарту PDF/A и открыт только для чтения. Внесение изменений запрещено.




      Как сменить IP-адрес при подключении через DLINK DIR-300
      Как сменить IP-адрес при подключении через DLINK DIR-300

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



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