【问题标题】:Use custom numeric keyboard on iPad only仅在 iPad 上使用自定义数字键盘
【发布时间】:2018-07-16 06:18:15
【问题描述】:

iPad 开发新手。我想在 iPad 上使用自定义数字键盘(使用 pod),但在 iPhone 上使用本机键盘。是否可以在 UITextField、UITextView 上进行扩展以设置/获取 inputView/keyboardType?还是有其他解决方案?

myTextField.keyboardType = .decimalPad

extension UITextField {
    ....

    case .decimalPad:
       if UIDevice.current.userInterfaceIdiom == .pad {
    ...
}

【问题讨论】:

    标签: swift ipad numeric-keypad


    【解决方案1】:

    您可以使用UITextFieldinputView 属性设置自定义输入视图。如果未设置,则当文本字段成为第一响应者时,将出现默认键盘(在文本字段中配置)。因此,仅在 iPad 上运行时将 if 设置为自定义数字键盘视图,并在 iPhone 上保持原样。

    编辑

    最初我指出 inputAccessoryView 而不是 inputView,因此在 cmets 中出现了混乱。

    【讨论】:

    • 谢谢,我可以在不进行子类化的情况下以某种方式覆盖 inputAccessoryView 属性,还是需要为应用程序中的每个 UITextField 设置它? (没有任何改变,自定义键盘出现在屏幕中间,使用 inputAccessoryView..)
    • 我的错,你想要inputView 而不是inputAccessoryView...抱歉混淆了它们。 inputView 实际上取代了键盘。无需子类化,只需为该属性设置一个视图。
    • 谢谢,想知道是否有办法为应用程序中的所有 UITextFields 设置 inputView 属性 once - “如果 iPad”?我想我必须创建一个 UITextField 的子类,因为该属性不能在扩展中被覆盖?
    • 如果你不想子类化,你可以添加一个带有静态工厂方法的扩展,比如withPlatformSpecificKeyboard,它封装了平台调度逻辑;您将使用这个工厂而不是标准初始化程序来创建 UITextField 实例。
    猜你喜欢
    • 2014-12-21
    • 1970-01-01
    • 2011-02-03
    • 2013-06-06
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多