为什么splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:在iPhone 6 Plus上没有被调用?

时间:2015-04-21 09:04:29

标签: ios uisplitviewcontroller iphone-6-plus

我在我的应用中为UISplitViewControlleriPhone实施了iPad的子类。当我将设备从Landscape转换为Portrait方向时,会调用标题中提到的方法。除非我在iPhone 6 Plus上运行应用程序,否则它的效果非常好。为什么不在那里调用这种方法?

如何使此方法有效?

当我在iPhone 6 Plus上启动应用时,两个方向的一切都很好。但问题是我将iPhone 6 PlusLandscape轮换到Portrait。我的导航控制器无法按预期工作。

这就是我的意思:

iPhone 5s肖像
enter image description here

我选择位置时的iPhone 5s纵向

enter image description here

iPhone 5s横向选定位置

enter image description here

当我从Landscape旋转到Portrait时,iPhone 5s

enter image description here

iPhone 6 Plus肖像

enter image description here

我选择位置时的iPhone 6 Plus纵向

enter image description here

具有所选位置的iPhone 6 Plus横向

enter image description here

从横向旋转到纵向时的iPhone 6 Plus this is a problem,因为我的方法splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:未被调用。当时UINavigationController无效。当我选择位置时,没有任何事情发生。

enter image description here

class PBOSplitViewController: UISplitViewController, UISplitViewControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()

        preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
        delegate = self
    }

    func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController!, ontoPrimaryViewController primaryViewController: UIViewController!) -> Bool {
        return false
    }
}

我在Storyboard中设置了我的SplitViewController。

1 个答案:

答案 0 :(得分:5)

iPhone 6+拥有更大的屏幕,在某些方面被视为iPad。 iPhone 6+上的分割视图控制器将尝试像在iPad上一样显示主窗格和细节窗格,除非应用程序处于"缩放显示模式"。

NSHipster有一篇文章更详细地解释了这一点:http://nshipster.com/uisplitviewcontroller/