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

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

      Идеальный тестер
      Идеальный тестер

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




      Сертификат сервера auto_join_ota_service недействителен
      Сертификат сервера auto_join_ota_service недействителен

      В контуре управления мобильными устройствами MDM-сервера могут находиться как корпоративные планшеты и телефоны, так и устройства, являющиеся собственностью сотрудников организации, так называемые BYOD-устройства (Bring Your Own Device). Иногда при выполнении привязки (Enrollment) к MDM-серверу Apple (Apple Configurator + Profile Manager) BYOD-устройств во время попытки установить профиль...




      Внедрение системы ADS-B в Австралии
      Внедрение системы ADS-B в Австралии

      Австралийские авиакомпании считаются самыми безопасными в мире благодаря авиакомпании Qantas Airways, у которой с 1973 года не зафиксировано ни одного случая, повлекшего человеческие жертвы! Привыкнув быть лидерами во всем, австралийцы анонсировали новые изменения в правилах полетов в воздушном пространстве Австралии. С 12 декабря 2013 года Австралия вводит новое требования: все воздушные суда, в...




      Глюки Apple iOS 9.3
      Глюки Apple iOS 9.3

      Недавно вышла очередная новая версия "самой совершенной в мире операционной системы с удобным интерфейсом, потрясающими функциями и уникальными принципами безопасности" © Apple - 9.3. Но не смотря на большую бочку меда и несчетное количество чепчиков, подброшенных вверх администраторами MDM-систем (особенно это относится к яблочному MDM - Profile Manager'у), в этой самой бочке оказалось...




      Восстановление разделов дисков
      Восстановление разделов дисков

      Как восстановить раздел диска? Не важно, какой это диск: винчестер компьютера, переносной USB-жесткий диск или USB-флэшка. Причиной сбоя могут быть чаще всего вирусы. В этом случае при попытке открыть диск виндовс сообщает некую прискорбную информацию, которая никак не может радовать, например: "Диск в устройстве [буква диска] не отформатирован. Произвести его форматирование?"  window.yaContextCb=window.yaContextCb||[] window.yaContextCb.push(()=>{...




      Ширитон Виталий Иванович - биографический очерк
      Ширитон Виталий Иванович - биографический очерк

      Ширитон Виталий Иванович - полковник ВВС, летал на Л-29, Л-39, МИГ-17, МИГ-21. С 1978 по 1984 годы был командиром полка 809 УАП (в/ч 19109) Харьковского высшего военного авиационного училища летчиков. При нем летный состав впервые в истории части освоил полеты в сложных метеоусловиях при первом минимуме погоды с использованием СДУ и боевое применение по наземным целям с практической стрельбой неуправляемыми...




      Как отобразить KML-трек в Garmin Pilot
      Как отобразить KML-трек в Garmin Pilot

      Есть такое iOS-приложение - Garmin Pilot, которое можно было бы назвать замечательным, но с марта 2022 года она стало немного иным... Но, довольно грустной лирики, ибо есть люди, которые до сих пор пользуются этим приложеним не смотря ни на что. Итак, в некоторых случаях пилотам может понадобиться выполнять полет и контролировать местоположение ВС относительно некого трека, который был записан ранее. Если...



Яндекс.Метрика