更改整个应用程序的keyboardAppearence

Luc*_*rdi 19 objective-c uitextfield uitextview ios ios7

使用iOS7,协议UITextInputTraits获取枚举的新值UIKeyboardAppearance.特别是我有兴趣改变keyboardAppearanceto UIKeyboardAppearanceDark以匹配当前应用程序的暗设计.

我首先查看了Info.plist,但似乎没有一个键可以让你全局设置这个属性.

我的第二个想法是使用UIAppearance但不幸的keyboardAppearance是没有UI_APPEARANCE_SELECTOR装饰器.但由于某种原因,这段代码:

[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark];
Run Code Online (Sandbox Code Playgroud)

适用于iOS7,但在iOS6中崩溃.

更奇怪的是以下代码:

[[UITextView appearance] setKeyboardAppearance:UIKeyboardAppearanceDark];
Run Code Online (Sandbox Code Playgroud)

在iOS7和iOS6中不起作用.

一个好主意可以是创建UITextField和UITextView的子类,但是这样在UISearchBar中不起作用.

我不想创建一个类别,因为我不想重写Apple类的实现,可能不是未来的证据.

有谁曾经处理过这个问题?

Moh*_*shi 5

使用此控件 https://github.com/hackiftekhar/IQKeyboardManager

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

它主要用于管理键盘和textField之间的距离,但您的问题也可以通过这个伟大的库来解决.