Как проверить, доступен ли UIKeyboardTypeDecimalPad? - PullRequest
2 голосов
/ 19 декабря 2011

Согласно справочнику UITextInputTraits , UIKeyboardTypeDecimalPad имеет значение «Доступно в iOS 4.1 и более поздних версиях».

В настоящее время я использую макросы препроцессора системной версии, найденные в Какпроверить версию iOS? , чтобы проверить, работает ли мое приложение в iOS 4.1 и более поздних версиях, но мне интересно ...

Есть ли лучший способ проверить доступность этой клавиатуры?Я не могу проверить доступность селектора "setKeyboardType", так как он всегда будет возвращать YES.Мне нужно проверить, доступно ли для использования одно из перечислений UIKeyboardType.

Есть идеи?

1 Ответ

4 голосов
/ 19 декабря 2011

Попробуйте:

    yourTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
    if (([[[UIDevice currentDevice] systemVersion] doubleValue] >= 4.1)) {
        yourTextField.keyboardType = UIKeyboardTypeDecimalPad;
    }

Это проверка версии iOS, запущенной на устройстве, чтобы определить, достаточно ли она «новая».То есть клавиатура с десятичной кнопкой была доступна в iOS4.1.Таким образом, любая версия iOS на этой или после этой версии имеет ее.

Техника - это (не очень) «тестирование возможностей на основе версии».Существуют и другие подобные методы тестирования возможностей, такие как проверка того, отвечает ли класс определенному селектору, которые хорошо работают в других ситуациях.

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

...