19

在 iOS7 中,协议UITextInputTraits为 enum 获取新值UIKeyboardAppearance。特别是我有兴趣更改keyboardAppearancetoUIKeyboardAppearanceDark以匹配当前应用程序的深色设计。

我首先查看了 Info.plist,但似乎没有允许您全局设置此属性的键。

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

[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark];

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

更奇怪的是下面的代码:

[[UITextView appearance] setKeyboardAppearance:UIKeyboardAppearanceDark];

不适用于 iOS7 和 iOS6。

一个好主意可以是创建 UITextField 和 UITextView 的子类,但这种方式例如在 UISearchBar 中不起作用。

我不想创建一个类别,因为我不想覆盖 Apple 类的实现并且可能不是未来的证明。

有人处理过这个吗?

4

1 回答 1

4

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

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

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

于 2014-04-10T11:39:31.013 回答