Для того, чтобы пользователи приложения не тыкали своими шаловливыми ручками куда попало не могли вводить заведомо не корректный текст, можно реализовать ряд ограничений для них.
На сайтах обычно это реализуется с помощью 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). Чтобы такого не было, придется немного дополнительно поколдовать с кодом.
Программа Jeppesen FliteStar/FliteMap позволяет выполнять навигационные расчеты для полета воздушного судна с одного аэродрома на другой. При этом учитываются летно-технические характеристики выбранного воздушного судна. Поэтому для наиболее точных результатов нужно использовать конкретную модель воздушного судна, имеющей правильные ЛТХ.
Когда-то пилотов гражданской авиации воспринимали как героев. Сегодня постоянное стремление обеспечить все более высокий уровень безопасности привело к созданию самолетов, которые по большому счету могут летать без непосредственного участия человека. Именно поэтому катастрофа самолёта Airbus A330-203 (рейс AF447 авиакомпании Air France) в 2009 году, унесшая жизни 228 человек и ставшая знаковым...
При передаче товаров, подлежащих маркировке, в универсальном передаточном документе (УПД), кроме стандартной бухгалтерской информации о контрагентах, товаре, цене, количестве и пр..., должны фигурировать коды маркировки данных товаров. Но все так просто - эти коды должны быть только в УПД в формате XML, в печатном PDF-файле их не должно быть.
Ситуация: вы подключили свой iPad или iPhone к компьютеру с помощью кабеля. Программа iTunes запустилась сама, или вы ее принудительно запустили, но функция синхронизации приложений (программ) не активна! :( Выражается это в невозможности установить/убрать галочку на Синхронизации приложений - вся станица "Программы" выглядит не активной.
- У тебя акробат стоит?- В последнее время все реже и реже... :( (Анекдот) Иногда при открытии документа PDF можно наблюдать следующую не очень оптимистическую надпись: Открытый файл соответствует стандарту PDF/A и открыт только для чтения. Внесение изменений запрещено.
Интернет-провайдер билайн присваивает своим пользователям динамические IP-адреса. В этом, конечно, есть свои минусы, ведь не зря статический IP-адрес дается за отдельную плату. Но лично я считаю, что динамический IP-адрес гораздо удобнее для Интернет-серфинга. Во-первых, скачивая с некоторых файлообменников (рапидшара, депозитфайлз и им подобные), не нужно ждать, когда закончится тайм-аут до...