更改整个应用程序的keyboardAppearence

时间:2013-10-28 17:19:02

标签: ios objective-c ios7 uitextfield uitextview

使用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 个答案:

答案 0 :(得分:5)

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

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

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