【发布时间】:2013-09-26 14:10:24
【问题描述】:
在 cocoa-touch 项目中是否有一个有用的属性可以允许在整个应用程序中设置唯一一致的键盘外观样式?假设我想在我的应用程序中的所有 textFields 和 textViews 上使用UIKeyboardAppearanceAlert,而无需直接修改任何内容。有可能吗?
【问题讨论】:
标签: ios objective-c cocoa-touch uikit uikeyboard
在 cocoa-touch 项目中是否有一个有用的属性可以允许在整个应用程序中设置唯一一致的键盘外观样式?假设我想在我的应用程序中的所有 textFields 和 textViews 上使用UIKeyboardAppearanceAlert,而无需直接修改任何内容。有可能吗?
【问题讨论】:
标签: ios objective-c cocoa-touch uikit uikeyboard
不,这是不可能的。 keyboardAppearance 是 UITextInputTraits 协议的一部分,没有标记为 UIAppearance 方法。如果是,您可以执行以下操作:
[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceAlert];
您可以通过查看文档或从您的代码中查看 UIKit 标头来确定可与外观代理一起使用的方法(命令单击方法,它会将您带到标头。
例如,在 UINavigationBar.h 中,你可以看到:
@property(nonatomic,retain) UIColor *barTintColor NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR; // default is nil
标记 UI_APPEARANCE_SELECTOR 表示可以在外观代理上使用此属性。 keyboardAppearance 上没有它,而且看起来 info.plist 中的任何键都不允许您定义应用程序范围的外观。
最好的办法是继承 textfield 和 textview 并在任何地方使用这些子类。
【讨论】:
[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark]; 它可以工作,即使该属性没有 UI_APPEARANCE_SELECTOR 装饰器