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

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

      Как показать скрытые папки и файлы в Mac OS
      Как показать скрытые папки и файлы в Mac OS

      По умолчанию скрытые папки и файлы операционной системе Mac OS не отображаются. Они, в принципе, и не нужны чаще всего пользователям, и могут понадобиться далеко не каждому маководу, и уж точно не каждый день. Вариантов для отображения скрытых папок и файлов на МАКе несколько: Один раз посмотреть, после закрытия папки при возврате в нее скрытые файлы снова станут не видимыми; Включить постоянное отображение скрытых папок и...




      Проблема авиационного шума
      Проблема авиационного шума

      Международные требования к шуму воздушных судов изложены в форме стандартов и рекомендуемой практики в документе Международной организации гражданской авиации (ИКАО) “Приложение 16 “Охрана окружающей среды” (том 1 “Авиационный шум”) Конвенции о международной гражданской авиации 1944г. Проблема авиационного шума возникла с конца 50-х годов со времени внедрения и начала интенсивной эксплуатации в мировой гражданской...




      Фразы про ЛИЦО (FACE)
      Фразы про ЛИЦО (FACE)

      Выражения, в которых используется слово ЛИЦО (face), использование их в повседневной речи и сравнение с русскими аналогами.   1. FACE THE MUSIC (досл.: «встретить музыку») По-русски это означает: держать ответ за что-либо, расплачиваться, "расхлёбывать кашу".Пример: You’ve made a mistake; now you’ll have to face the music.Ты совершил ошибку, теперь тебе придется за нее расплачиваться.




      Калькулятор торта
      Калькулятор торта

      При приготовлении торта практически всегда кондитеры используют специальную рамку, которая определяет форму торта и ограничивает его размеры. Чаще всего эта рамка имеет форму круга, чуть реже - квадрата и прямоугольника. Остальные варианты - овал, сердце, ромб и различные эксклюзивные нестандартные формы - слишком редкие, чтобы принимать их во внимание. Это не важно - откуда был взят рецепт...




      Как настроить skype
      Как настроить skype

      Многие пользуются бесплатной программой skype. Но крайние версии скайпа уже не так лояльны к пользователям - программа стала слишком самостоятельной и в некоторых случаях напрягает своими действиями. Плохие черты характера skype стали более активно проявляться после покупки скайпа компанией Microsoft. Многим не понравилась эта "сделка с дьяволом", но популярность скайпа не сильно уменьшилась...




      Переменные средЫ Windows - TEMP и TMP
      Переменные средЫ Windows - TEMP и TMP

      Переменные среды Windows - ударение на "Ы" во втором слове (смысл фразы заложен в родительном падеже и верном ударении: переменные чего? - среды!), в англоязычных версиях виндовс - environment variable) Переменные среды Windows используются для настройки операционных систем. Не каждому пользователю нужно разбираться с этими настройками и влезать в эти переменные, но есть пара переменных, о которых нужно...




      Огни статуса ВПП - Runway Status Lights
      Огни статуса ВПП - Runway Status Lights

      20 октября 2014 года в аэропорту Москва Внуково произошла авиакатастрофа с самолетом Falcon 50EX французской авиакомпании UniJet (регистрационный номер F-GLSA). При выполнении взлета ночью в сложных метеоусловиях воздушное судно столкнулось со снегоочистителем, совершившим несанкционированный выезд на ВПП. Конечно же было проведено тщательное расследование данного происшествия, были определены все причины -...



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