Для того, чтобы пользователи приложения не тыкали своими шаловливыми ручками куда попало не могли вводить заведомо не корректный текст, можно реализовать ряд ограничений для них.
На сайтах обычно это реализуется с помощью 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). Чтобы такого не было, придется немного дополнительно поколдовать с кодом.
Начиная с версии какой-то 3.xxxx в программе uTorrent появилась реклама. Причем, реклама довольно агрессивная - даже в те минуты, а иногда - секунды, когда программа uTorrent не свернута в трей, ее реклама успевает надоесть. Хорошо, что разработчики приложения uTorrent дали возможность пользователям программы через настройки отключить рекламу.
При обновлении программы Jepp View иногда может понадобиться код зоны покрытия навигационной БД (coverage code). В течение последних нескольких лет Jeppesen программирует и выдает своим клиентам такие серийные номера для программ при последующих обновлениях которых не нужно вводить coverage code - он уже не нужен, т.к. программа установки обновления автоматически его считывает в системе на...
Очередная подстава от Microsoft - лазерный принтер HP LazerJet PRO M252 не печатает из MS Office 2010. Операционная система - Windows 7 x64, также аналогичная проблема возникала в Windows 10. Причем MS Word отправляет документы на печать, и никаких ошибок при этом нет. А если попробовать напечатать документ из MS Excel - программа сразу же выдает ошибку печати. Из других программ документы печатаются без...
Чтобы работать с очередями IBM MQ с помощью PHP, необходимо установить библиотеку для PHP - mqseries. В настоящее время самая актуальная библиотека mqseries имеет версию 0.15.0 (beta) от 14 июля 2017. Предварительно необходимо установить IBM WebSphereMQ. Исходные данные: - виртуальный сервер с установленной операционной системой Linux Debian 10 x64; - панель управления сервером ISP Manager Lite 5. - нативная...
David Barnholdt написал статью "An exercise based on my PSL experience:The power of open-ended requirements" (упражнение на основе моего опыта в PSL: Сила открытых требований). Сегодня я провёл занятие по Scrum и Lean. Я смог опробовать часть материалов из курса PSL в упражнениях, которые разработал всего за день до занятия.
The Grid MORA - (Grid Minimum Off Rate Altitude) - минимальная абсолютная высота вне маршрута (сетчатая). Имеет код раздела и подраздела - A и S соответственно при кодировании в БД ARINC-424. По сути, AS-записи содержат таблицу высот. Каждая запись (строка) содержит 30 блоков, а поля "Начальная широта" и "Начальная долгота" совместно определяют нижний левый угол для первого блока каждой записи.
Путешествуя по Европе, довольно часто приходится планировать свой маршрут через Германию, например, получив немецкий шенген, едешь в Швейцарию или в Прагу. Не всегда получается первоочередно поехать в ту страну, визу которой получил. Если "точка входа" в шенген - Германия, то чаще всего транзитным пунктом становится Берлин. Из России в Берлин можно прилететь в аэропорт Шонефельд (Schönefeld), а вот дальше...