【问题标题】:Set UIKeyboardAppearance across the whole app在整个应用程序中设置 UIKeyboardAppearance
【发布时间】:2013-09-26 14:10:24
【问题描述】:

在 cocoa-touch 项目中是否有一个有用的属性可以允许在整个应用程序中设置唯一一致的键盘外观样式?假设我想在我的应用程序中的所有 textFields 和 textViews 上使用UIKeyboardAppearanceAlert,而无需直接修改任何内容。有可能吗?

【问题讨论】:

    标签: ios objective-c cocoa-touch uikit uikeyboard


    【解决方案1】:

    不,这是不可能的。 keyboardAppearanceUITextInputTraits 协议的一部分,没有标记为 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 并在任何地方使用这些子类。

    【讨论】:

    • 实际上在 iOS7 上,如果你调用 [[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark]; 它可以工作,即使该属性没有 UI_APPEARANCE_SELECTOR 装饰器
    • Luca 的代码在 UITextField 上为我工作,但是当我尝试用 UITextView 做同样的事情时,我的应用程序崩溃了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多