Подтвердить что ты не робот

Измените клавиатуру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 и, вероятно, не будущие доказательства.

Кто-нибудь когда-либо имел дело с этим?

4b9b3361

Ответ 1

Используйте этот элемент управления https://github.com/hackiftekhar/IQKeyboardManager

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[IQKeyboardManager sharedManager] setOverrideKeyboardAppearance:YES];
    [[IQKeyboardManager sharedManager] setKeyboardAppearance:UIKeyboardAppearanceDark];
    return YES;
}

В основном используется для управления расстоянием между клавиатурой и текстовым полем, но ваша проблема также может быть решена с помощью этой большой библиотеки.