0

我有一个实现 UIPopoverPresentationControllerDelegate 方法的视图控制器:

adaptivePresentationStyleForPresentationController(controller: UIPresentationController!, traitCollection: UITraitCollection!) -> UIModalPresentationStyle 

据我了解,这应该只适用于 iPhone 6 等紧凑型尺寸,而不适用于 iPad。但是在一个项目中,它甚至被 iPad 调用,因此,我没有得到一个弹出框,而是全屏模式的东西。

我看不出是什么导致了这种情况发生。我查看了另一个具有大致相同设置的项目,并确认在 iPad sim(仅限 iphone)期间不会调用此方法。

还有人经历过这个吗?

4

2 回答 2

2

我发现出了什么问题。我在代码完成期间选择了错误的函数,我打算使用的正确委托方法是:

adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle

不是

adaptivePresentationStyleForPresentationController(controller: UIPresentationController!, traitCollection: UITraitCollection!) -> UIModalPresentationStyle 
于 2015-06-23T03:52:18.067 回答
0

根据您的 iOS 级别,您应该使用adaptivePresentationStyleForPresentationController: traitCollection:

我正在使用这种方法(返回.None),它适用于我迄今为止测试过的所有设备。

在 Apple 文档中,adaptivePresentationStyleForPresentationController:它这样说:

在 iOS 8.3 及更高版本中,使用adaptivePresentationStyleForPresentationController:traitCollection: 方法代替此方法来处理所有特征更改。如果您不实现该方法,则可以使用此方法在转换到水平紧凑环境时更改演示样式。

编辑 对于我的目标 iOS 8,我实际上使用了这两种方法。8.3 之前的版本不会使用traitCollection:

于 2015-12-07T03:46:25.697 回答