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

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

      Номер версии iOS-приложения и сборки в Swift
      Номер версии iOS-приложения и сборки в Swift

      Отображение номера версии iOS-приложения в интерфейсе программы считается хорошим тоном, ибо пользователь должен иметь возможность легко, быстро и просто узнать его для каждого установленного приложения. Если у приложения также указывается номера билда (номер сборки), то его тоже нужно отображать для полной картины. Соответственно, номера приложения и сборки (при необходимости) нужно показывать в каком-то месте...




      FAA разрешила пилотам American Airlines использовать iPad как EFB
      FAA разрешила пилотам American Airlines использовать iPad как EFB

      Федеральное управление гражданской авиации США (Federal Aviation Administration, FAA) разрешило пилотам авиакомпании American Airlines использовать в полете планшеты iPad для просмотра электронных карт и чтения летной документации. Разрешение вступает в силу в пятницу, 16 декабря 2011 г. Сначала планшеты будут применяться на Boeing 777, а потом и на других типах самолетов из флота American...




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

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




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

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




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

      Как разделить текстовый файл построчно на несколько отдельных файлов и удалить часть строки? Бесплатно, без СМС, и без Python! Как-то при тестировании процесса ввода в оборот маркированного товара пришлось иметь дело с большим количеством кодов SGTIN...




      Аэронавигационные требования к бортовому оборудованию ВС
      Аэронавигационные требования к бортовому оборудованию ВС

      В процесе развития авиационной отрасли эволюционируют и требования к бортовому и наземному оборудованию. Новое оборудование должно быть более надежным, более точным и более простым с точки зрения внедрения и эксплуатации. Соответственно, для него определяются новые требования - более жесткие по сравнению с предыдущими.




      Как почистить кэш панели управления ISP Manager 5
      Как почистить кэш панели управления ISP Manager 5

      Иногда в панели управления сервером ISP Manager Lite в интерфейсе могут быть "глюки", например, отсутствие некоторых элементов управления или всплывающие окна с указанием на ошибку.



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