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

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

      Москва и Ульяновск. Разница во времени
      Москва и Ульяновск. Разница во времени

      Помню, что в 80-тых годах время в Ульяновске отличалось от московского на 1 час и соответствовало самарскому времени. Потом в 1989 году в Ульяновске сделали московское время. И все жили в унисон с Москвой, и было это удобно, в принципе. Но нашлись умники, которые стали ныть, что их утром по утрам солнце слишком рано будит, а вечером, якобы, темнеет слишком быстро, и надо это все срочно исправить в целях...




      Как добавить свой CSS-класс в редактор TinyMCE в Joomla
      Как добавить свой CSS-класс в редактор TinyMCE в Joomla

      Многие создатели сайтов на Joomla используют собственные классы для различных объектов CSS. Это могут быть классы, например, для таблиц или изображений. Начиная с Joomla версии 2.5 эта популярная CMS использует поддержку технологии "Lightbox", и теперь для получения этого эффекта не нужно устанавливать сторонние расширения, все уже реализовано в самом движке Joomla, достаточно только в редакторе...




      Henry Emery & Andy Roberts - Aviation English
      Henry Emery & Andy Roberts - Aviation English

      Aviation English by Henry Emery & Andy Roberts - новый курс английского языка, предназначенный для подготовки летных специалистов (пилотов, борт-радистов, штурманов и авиадиспетчеров) к 4-му уровню владения английским языком по шкале ИКАО. Материал Aviation English by Henry Emery & Andy Roberts отвечает всем требованиям, предъявляемым к языковой подготовке авиаперсонала (DOC 9825 ИКАО – «ICAO...




      Python - FizzBuzz
      Python - FizzBuzz

      Один программист при устройстве на работу получил задание - написать программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово «Fizz», а вместо чисел, кратных пяти — слово «Buzz». Если число кратно и 3, и 5, то программа должна выводить слово «FizzBuzz».




      Содержимое файла hosts
      Содержимое файла hosts

      Многие рядовые и слегка продвинутые пользователи компьютеров много лет пользовались ими и не подозревали о существовании какого-то файла по имени hosts, не имеющего фамилии (т.е. расширения). Но благодаря вирусам и неидеальности операционных систем семейства Форточек (Windows) пользователям пришлось познакомиться с этим "хостом", причем, довольно тесно.




      Как повернуть видео на 90 градусов?
      Как повернуть видео на 90 градусов?

      Многие современные гаджеты имеют встроенную фото/видео камеру (а то и даже две): планшеты, видео регистраторы, мобильные телефоны... Последние по причине очень широкого распространения довольно часто используются владельцами в качестве средства фото или видеофиксации. Причем, зачастую совершенно не задумываясь над итогом, держат мобильный телефон так, как удобнее, а не так, как нужно для...




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

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



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