如何在 iPad 上运行的 iPhone 应用程序中获取 iOS 8 自定义键盘的主机应用程序屏幕几何图形?

Posted

技术标签:

【中文标题】如何在 iPad 上运行的 iPhone 应用程序中获取 iOS 8 自定义键盘的主机应用程序屏幕几何图形?【英文标题】:How to get host app screen geometry for iOS 8 custom keyboard inside iPhone app running on iPad? 【发布时间】:2015-03-30 19:12:08 【问题描述】:

“我的自定义”键盘为所有 Apple 设备的每种屏幕分辨率都提供了预设。所以我有 iphone、iphon5、iphone6、iphone6plus 和 ipad 预设。

但如果用户在 iPad 上运行 iPhone 应用程序(如 instagram),我需要加载 iphone 键盘预设并使用其几何形状。

iPhone 6 和 6+ 也可以使用拉伸模式,当应用程序像 iPhone 5 应用程序一样运行时被拉伸。

因此确定UI_USER_INTERFACE_IDIOM 不是解决方案。 键盘扩展和主机应用程序可以以不同的方式查看屏幕几何图形,所以我被困在这里。至少需要为宿主应用程序获取应用程序框架或任何其他显式方式来获取该几何体。

应用和键盘扩展以不同的方式查看几何图形:

在 ipad 屏幕上的 iphone 应用程序内部运行时,Swift 键似乎也有相同的错误。

ipad 上 iphone 应用内的 Swiftkey:

【问题讨论】:

【参考方案1】:

我刚刚找到了一种在键盘扩展上检查 isPad 的方法,但我无法确定这是最好的方法。

UI_USER_INTERFACE_IDIOM() && YourKeyboardViewController.instance.view.bounds.size.width == UIScreen.mainScreen.bounds.size.width

您应该在 YourKeyboardViewController.instance 调用 viewWillAppear() 之后执行此操作,之后 view.bounds 确实从 768x1024 更改为 320x480。

【讨论】:

以上是关于如何在 iPad 上运行的 iPhone 应用程序中获取 iOS 8 自定义键盘的主机应用程序屏幕几何图形?的主要内容,如果未能解决你的问题,请参考以下文章

隐藏在 iPad 上运行的 iPhone 应用程序的状态栏

如何在 iOS 7.1 中隐藏状态栏。在 iPad 上运行 iPhone 应用程序? [复制]

如何在 iPad 上运行的 iPhone 应用程序中获取 iOS 8 自定义键盘的主机应用程序屏幕几何图形?

如何在运行仅 iPhone 应用程序(非通用)的 iPad 上支持 UIPickerView 中的 VoiceOver?

在 iPad 上查看时,应用程序没有以 iPhone 分辨率运行

我如何获得一个运行良好的 iPhone 应用程序,就像在 iTunes 商店为 iPad 列出的 iPad 上一样?