Измените клавиатуруAppearence для всего приложения
В iOS7 протокол UITextInputTraits
получает новые значения для перечисления UIKeyboardAppearance
.
В частности, меня интересует изменение keyboardAppearance
на UIKeyboardAppearanceDark
, чтобы соответствовать темному дизайну приложения.
Сначала я просмотрел Info.plist, но кажется, что в нем нет ключа, позволяющего глобально установить это свойство.
Моя вторая мысль заключалась в использовании UIAppearance, но, к сожалению, keyboardAppearance
не имеет декоратора UI_APPEARANCE_SELECTOR
.
Но почему-то этот код:
[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark];
работает на iOS7, но сбой в iOS6.
Еще страннее следующий код:
[[UITextView appearance] setKeyboardAppearance:UIKeyboardAppearanceDark];
не работает в iOS7 и iOS6.
Хорошей идеей может быть создание подкласса как UITextField, так и UITextView, но таким образом это не работает, например, в UISearchBar.
Я не хочу создавать категорию, потому что я не хочу сортировать переопределение реализации классов Apple и, вероятно, не будущие доказательства.
Кто-нибудь когда-либо имел дело с этим?
Ответы
Ответ 1
Используйте этот элемент управления
https://github.com/hackiftekhar/IQKeyboardManager
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[IQKeyboardManager sharedManager] setOverrideKeyboardAppearance:YES];
[[IQKeyboardManager sharedManager] setKeyboardAppearance:UIKeyboardAppearanceDark];
return YES;
}
В основном используется для управления расстоянием между клавиатурой и текстовым полем, но ваша проблема также может быть решена с помощью этой большой библиотеки.