Для того, чтобы пользователи приложения не тыкали своими шаловливыми ручками куда попало не могли вводить заведомо не корректный текст, можно реализовать ряд ограничений для них.
На сайтах обычно это реализуется с помощью JS-скриптов, которые, теоретически, могут быть оключены пользователем на глобальном уровне, и все ограничения, реализованные с помощью JS перестанут действовать.
В iOS-приложении пользователь ничего отключить не сможет :)
Дале - примеры кода...
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
}
@IBAction func digitLimitSize(_ sender: UITextField) {
if sender.text!.lengthOfBytes(using: String.Encoding.utf8) > 2 {
sender.text = String(sender.text!.prefix(2))
}
}
В данном примере - это 2-значное число.
Ограничение настроено на событие Editing Changed.
Добавить во 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). Чтобы такого не было, придется немного дополнительно поколдовать с кодом.
Любой сотрудник некрупной IT-компании подтвердит, что четверг – самый скучный день недели. В самом деле - в понедельник все разгребают пришедшую за выходные почту, ругаются с поставщиками кофе и воды для кулера, и курят на лестнице, рассказывая друг другу анекдоты для борьбы со сном и похмельем. Во вторник задачи розданы, силы свежи, и код пишется на одном дыхании. В среду количество полезной...
В контуре управления мобильными устройствами MDM-сервера могут находиться как корпоративные планшеты и телефоны, так и устройства, являющиеся собственностью сотрудников организации, так называемые BYOD-устройства (Bring Your Own Device). Иногда при выполнении привязки (Enrollment) к MDM-серверу Apple (Apple Configurator + Profile Manager) BYOD-устройств во время попытки установить профиль...
Австралийские авиакомпании считаются самыми безопасными в мире благодаря авиакомпании Qantas Airways, у которой с 1973 года не зафиксировано ни одного случая, повлекшего человеческие жертвы! Привыкнув быть лидерами во всем, австралийцы анонсировали новые изменения в правилах полетов в воздушном пространстве Австралии. С 12 декабря 2013 года Австралия вводит новое требования: все воздушные суда, в...
Недавно вышла очередная новая версия "самой совершенной в мире операционной системы с удобным интерфейсом, потрясающими функциями и уникальными принципами безопасности" © Apple - 9.3. Но не смотря на большую бочку меда и несчетное количество чепчиков, подброшенных вверх администраторами MDM-систем (особенно это относится к яблочному MDM - Profile Manager'у), в этой самой бочке оказалось...
Как восстановить раздел диска? Не важно, какой это диск: винчестер компьютера, переносной USB-жесткий диск или USB-флэшка. Причиной сбоя могут быть чаще всего вирусы. В этом случае при попытке открыть диск виндовс сообщает некую прискорбную информацию, которая никак не может радовать, например: "Диск в устройстве [буква диска] не отформатирован. Произвести его форматирование?" window.yaContextCb=window.yaContextCb||[] window.yaContextCb.push(()=>{...
Ширитон Виталий Иванович - полковник ВВС, летал на Л-29, Л-39, МИГ-17, МИГ-21. С 1978 по 1984 годы был командиром полка 809 УАП (в/ч 19109) Харьковского высшего военного авиационного училища летчиков. При нем летный состав впервые в истории части освоил полеты в сложных метеоусловиях при первом минимуме погоды с использованием СДУ и боевое применение по наземным целям с практической стрельбой неуправляемыми...
Есть такое iOS-приложение - Garmin Pilot, которое можно было бы назвать замечательным, но с марта 2022 года она стало немного иным... Но, довольно грустной лирики, ибо есть люди, которые до сих пор пользуются этим приложеним не смотря ни на что. Итак, в некоторых случаях пилотам может понадобиться выполнять полет и контролировать местоположение ВС относительно некого трека, который был записан ранее. Если...