Для того, чтобы пользователи приложения не тыкали своими шаловливыми ручками куда попало не могли вводить заведомо не корректный текст, можно реализовать ряд ограничений для них.
На сайтах обычно это реализуется с помощью 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). Чтобы такого не было, придется немного дополнительно поколдовать с кодом.
Дано: компьютер с операционной системой Windows XP SP3 в корпоративной сети, построенной на Novell, несколько сетевых дисков, на которые даны права на запись/чтение. Встроенный браузер Internet Explorer - версии 7.... с чем-то. Неудобство: при копировании с/на любой сетевой диск проводник выдает сообщение: "Скопировать или переместить файлы из этой зоны?", в результате, пользователю каждый раз приходится дополнительно...
Когда есть GPS-сигнал, то его нужно иметь, а не только желать! ("When a GPS signal is a must have, not a nice to have"). Возможны два варианта использования дополнительного GPS-приемника: подключать напрямую к iPad или подключать по Bluetooth. iPad использует встроенный GPS-приемник, который не очень надежный при использовании его в полете. Для того, чтобы уверенно пользоваться в полете функцией "moving...
Некогда любимая многими рыжая лисичка по имени Mozilla Firefox в быстротечном процессе развития дообновлялась аж до версии № 52 и... в очередной раз слегка деградировала :( И теперь Firefox не только жрет оперативную память и отсылает куда-то отчеты по активности пользователей, но и по умолчанию отображает при попытке ввода паролей на сайтах страшную надпись: «Это соединение не защищено. Логины,...
Для расчета взлетно-посадочных характеристик приходится оперировать различными данным, в том числе располагаемыми дистанциями: TORA,TODA, ASDA и LDA. Каждый аэродром должен определять располагаемые дистанции для всех имеющихся ВПП (для каждого торца) для публикации их в АИПе или в НОТАМ.
Есть две замечательные программы для пилотов/штурманов от фирмы Jeppesen - JeppView 3 и FlightDeck 3. Вот только Jeppesen несколько лет назад перестал их поддерживать. Вместо программы JeppView 3 сейчас можно приобрести и установить программу JeppView for Windows (в принципе, она почти как старая версия, ничуть не хуже, даже, наоборот, функционал стал более расширенным). А вместо старой доброй FlightDeck 3...
Программа Jeppesen Services Update Manager (JSUM) предназначена для обновления навигационных баз данных различных спутниковых навигационных систем (Honeywell Primus Epic, Honeywell Apex, the Avidyne EX5000 MFD, Garmin 155, 430/530 Series GPS, Garmin G1000 Flight Deck и др.). Запись БД осуществляется с помощью специального карт-ридера - так называемой приставки SkyBound.
Как писать комментарии в JSON-файле? Некоторых аналитиков этот вопрос приводит в замешательство, и они либо признаются сразу, что не знают/не помнят, либо начинают что-то сочинять на ходу :) Кто-то при этом может вспомнить про экранирование спец-символов. На самом деле формат JSON не предусматривает добавление комментариев. JSON - это только данные.