【问题标题】:How a keyboard extension know it's running in a iPhone app on iPad?键盘扩展如何知道它在 iPad 上的 iPhone 应用程序中运行?
【发布时间】:2014-09-26 03:32:50
【问题描述】:

在 iPad 上使用 iPhone 应用时,键盘扩展只能知道 iPad 的屏幕尺寸,但实际上我应该知道它就像在 iPhone 上运行一样,并且得到像 iPhone 一样的尺寸。

我当前在 iPad 上的 iPhone 应用程序中运行的代码如下所示:

【问题讨论】:

    标签: iphone ipad ios8 ios-app-extension ios-keyboard-extension


    【解决方案1】:

    UIInputViewControllerviewDidAppear中,我实际上可以得到self.inputView的帧,在这种情况下是320。

    然而,self.viewself.inputView 的框架在viewDidloadviewWillAppear 中都是CGRecteZero,这实际上就是为什么我们应该只在[super viewDidAppear] 之后设置键盘高度。

    【讨论】:

    • 我绝对没有做过任何创建自定义扩展的事情,但我很想知道你是否不能将键盘的框架宽度设置为 self.view.frame.size.width ,并添加 UIViewAutoresizingFlexibleWidth autoresizingMask?对于任何普通的子视图,它将处理将其调整为视图的宽度,而无需实际测试该值..
    • @Mike 是的,你是对的,但由于某些原因,我们仍在手动计算大小。
    【解决方案2】:

    在 UIInputViewController 的 viewDidLayoutSubviews 中调用 [super viewDidLayoutSubviews] 可以直接查看键盘视图(self.view.frame)的实际大小。它是第一个检查大小的地方,比 viewDidAppear 快得多。

    【讨论】:

      【解决方案3】:

      您的键盘扩展程序应该是通用的,如果是,那么您可以使用以下代码获取设备类型(iPhone/iPad)。

      let isPad = UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad 
      

      您可能正在使用以下方法来获取屏幕边界

      UIScreen.mainScreen().bounds.size
      

      此方法在键盘扩展中给出设备的整个高度、宽度。

      您可以通过使用以上两个条件来使用嵌套条件来解决您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-04
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 2015-07-14
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多