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

Ограничения для 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). Чтобы такого не было, придется немного дополнительно поколдовать с кодом.

 

 


      Как убрать рекламу в uTorrent
      Как убрать рекламу в uTorrent

      Начиная с версии какой-то 3.xxxx в программе uTorrent появилась реклама. Причем, реклама довольно агрессивная - даже в те минуты, а иногда - секунды, когда программа uTorrent не свернута в трей, ее реклама успевает надоесть. Хорошо, что разработчики приложения uTorrent дали возможность пользователям программы через настройки отключить рекламу.




      Код зоны покрытия для Jepp View, eLink и Flite Deck
      Код зоны покрытия для Jepp View, eLink и Flite Deck

      При обновлении программы Jepp View иногда может понадобиться код зоны покрытия навигационной БД (coverage code). В течение последних нескольких лет Jeppesen программирует и выдает своим клиентам такие серийные номера для программ при последующих обновлениях которых не нужно вводить coverage code - он уже не нужен, т.к. программа установки обновления автоматически его считывает в системе на...




      Принтер HP LazerJet PRO M252 не печатает из MS Office 2010
      Принтер HP LazerJet PRO M252 не печатает из MS Office 2010

      Очередная подстава от Microsoft - лазерный принтер HP LazerJet PRO M252 не печатает из MS Office 2010. Операционная система - Windows 7 x64, также аналогичная проблема возникала в Windows 10. Причем MS Word отправляет документы на печать, и никаких ошибок при этом нет. А если попробовать напечатать документ из MS Excel - программа сразу же выдает ошибку печати. Из других программ документы печатаются без...




      Установка расширения MQ для PHP – mqseries
      Установка расширения MQ для PHP – mqseries

      Чтобы работать с очередями IBM MQ с помощью PHP, необходимо установить библиотеку для PHP - mqseries. В настоящее время самая актуальная библиотека mqseries имеет версию 0.15.0 (beta) от 14 июля 2017. Предварительно необходимо установить IBM WebSphereMQ.   Исходные данные: - виртуальный сервер с установленной операционной системой Linux Debian 10 x64; - панель управления сервером ISP Manager Lite 5. - нативная...




      Сила открытых требований
      Сила открытых требований

      David Barnholdt написал статью "An exercise based on my PSL experience:The power of open-ended requirements" (упражнение на основе моего опыта в PSL: Сила открытых требований). Сегодня я провёл занятие по Scrum и Lean. Я смог опробовать часть материалов из курса PSL в упражнениях, которые разработал всего за день до занятия.




      Кодирование Grid MORA в БД Arinc-424
      Кодирование Grid MORA в БД Arinc-424

      The Grid MORA - (Grid Minimum Off Rate Altitude) - минимальная абсолютная высота вне маршрута (сетчатая). Имеет код раздела и подраздела - A и S соответственно при кодировании в БД ARINC-424. По сути, AS-записи содержат таблицу высот. Каждая запись (строка) содержит 30 блоков, а поля "Начальная широта" и "Начальная долгота" совместно определяют нижний левый угол для первого блока каждой записи.




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

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



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