在整个应用程序中设置UIKeyboardAppearance

Ser*_*yov 5 cocoa-touch objective-c uikit uikeyboard ios

在可可触摸项目中是否有一个有用的属性,允许在整个应用程序中设置一对一的键盘外观风格?说我想要UIKeyboardAppearanceAlert在我的应用程序中的所有textFields和textViews,而不直接修改任何东西.有可能吗?

jrt*_*ton 8

不,这是不可能的.该协议的keyboardAppearance一部分UITextInputTraits并未标记为UIAppearance方法.如果它是你可以做的事情:

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

您可以通过查看文档来识别可以与外观代理一起使用的方法,或者在代码中,通过UIKit标头识别可以使用的方法(按命令单击某个方法,它将带您进入标题.

例如,在UINavigationBar.h中,您可以看到:

@property(nonatomic,retain) UIColor *barTintColor NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR;  // default is nil
Run Code Online (Sandbox Code Playgroud)

标记UI_APPEARANCE_SELECTOR表示可以在外观代理上使用此属性.它不存在keyboardAppearance,并且它看起来不像info.plist中的任何键允许您定义应用程序范围的外观.

最好的办法是将textfield和textview子类化,并在任何地方使用这些子类.

  • 实际上在iOS7上如果你调用`[[UITextField外观] setKeyboardAppearance:UIKeyboardAppearanceDark];`它工作,即使该属性没有UI_APPEARANCE_SELECTOR装饰器 (9认同)
  • Luca的代码使用UITextField为我工作,但是当我尝试用UITextView做同样的事情时,我的应用程序崩溃了. (4认同)