出现弹出窗口时,iOS 8 中禁用 UISplitViewController 纵向到横向旋转
Posted
技术标签:
【中文标题】出现弹出窗口时,iOS 8 中禁用 UISplitViewController 纵向到横向旋转【英文标题】:UISplitViewController portrait to landscape rotation disabled in iOS 8 when popover presented 【发布时间】:2015-02-13 18:43:36 【问题描述】:好吧,这很奇怪。
在 ios 8 中,如果在 UISplitViewController 的主面板中显示弹出框,而在纵向时,则禁用旋转。我已经进行了一系列测试并确认是这种情况。
UISplitViewController 上有一个私有方法_shouldPreventAutorotation,它在旋转时被调用并检查弹出框内容控制器上的presentationController 属性。如果这返回一个非零值,则禁用旋转。如果您覆盖该属性并返回 nil,则再次启用旋转。
有人知道为什么在 iOS 8 中添加了这种行为吗?
我上传了演示此行为的测试项目here。
【问题讨论】:
你找到解决办法了吗? 是的,我发布了我在下面找到的解决方案。 您的解决方案关闭了视图,我想旋转视图。 【参考方案1】:因此,在 Hopper 中进行了更多调查和反编译之后,UISplitViewController 上有一个私有方法,当设备旋转时会调用该方法来确定是否应禁用旋转。
如果主面板可见,则主面板有一个子模态视图控制器(在本例中为弹出框),并且显示的弹出框的presentationController 属性返回非零值,然后禁用旋转。
我可以通过覆盖弹出框控制器上的 -presentationController 来覆盖此行为,并返回 nil。不确定是否有任何副作用,但它有效。
- (UIPresentationController *)presentationController
return nil;
【讨论】:
这对你来说是怎么成功的,我们能不能因为这样做而面临应用商店的拒绝。 不,这不使用任何私有 API,因此它是 App Store 安全的。我们已经在商店里买了几年了,没有任何问题。 谢谢您的帮助。以上是关于出现弹出窗口时,iOS 8 中禁用 UISplitViewController 纵向到横向旋转的主要内容,如果未能解决你的问题,请参考以下文章
当用户在 iPad 上的 WKWebView 中点击电话号码时如何禁用弹出窗口?
如何在 Spring 服务器配置中禁用“需要身份验证的弹出窗口”?