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

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

      Как разделить текстовый файл построчно
      Как разделить текстовый файл построчно

      Если есть многосточный текстовый файл, который нужно разделить на части - быстро и не вручную, то есть несколько вариантов для этого. В порядке предпочтения/простоты использования и убывания приоритета:




      Шезлонг Ларри или Мечты сбываются
      Шезлонг Ларри или Мечты сбываются

      В 1982 году Ларри Уолтерс, пенсионер из Лос-Анджелеса решил осуществить давнюю мечту - полететь, но не на самолете. Он изобрел собственный способ путешествовать по воздуху. Уолтерс привязал к удобному креслу сорок пять метеорологических шаров, наполненных гелием, каждый из которых имел метр в диаметре. Он уселся в кресло, взяв запас бутербродов, пиво и дробовик. По сигналу, его друзья отвязали веревку,...




      Программа для пересчета координат СК-42 - WGS-84
      Программа для пересчета координат СК-42 - WGS-84

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




      Висит получение IP-адреса
      Висит получение IP-адреса

      Железо: нетбук Lenovo ~ 2010 года выпуска. Операционная система: Windows XP. Описание проблемы: при попытке подключения к сети Wi-Fi агент беспроводной сети нетбука не запрашивает пароль (а он фактически имеется), а сразу пытается подключиться. При этом постоянно отображается "Получение IP-адреса", и подключения фактически не происходит, доступа к сети Интернет нет.




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

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




      Шрифты Jeppesen
      Шрифты Jeppesen

      Программы Jeppesen eLink for Windows и JeppView позволяют распечатывать схемы аэродромов, в том числе и с помощью виртуальных принтеров - сохранять в формате PDF. Иногда может возникнуть необходимость (например, в образовательных целях) использовать часть схемы аэродрома, удалив часть объектов, либо, наоборот - внести в нее некоторые поправки и добавить дополнительные данные




      Как отформатировать флэшку в NTFS?
      Как отформатировать флэшку в NTFS?

      Считается, что файловая система NTFS надежнее, чем FAT32 и FAT16. Но не смотря на это все флэшки по умолчанию имеют файловую систему FAT16 (Windows отображает как просто FAT). Большинство пользователей это никак не напрягает и многие из них даже не задумываются об изменении файловой системы своей любимой флэшки. Но в последнее время из-за развития технологии и бесповоротного удешевления...



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