10

我的 rootViewController 是一个UITabbarController并且包含UINavigationControllers。

为了限制旋转,从 iOS6 开始,在一些但不是所有视图上,我对这两个控制器进行了子类化,以尊重它们最顶层或可见视图的 shouldAutorotate 响应。

这一切都非常完美......大多数时候。

在一种情况下,从不允许旋转的视图 (UITableviewController) 开始。

我推了一个允许自动旋转的视图,旋转到横向然后回到纵向。

然后当我弹出视图时,一切看起来都很好。

但是现在如果我旋转设备,状态栏单独旋转,在顶部留下一个空白区域并覆盖当前视图左侧的一部分。当前视图不旋转(因为它不应该)。只有状态栏来回旋转。视图保持响应,接收触摸并正常工作,不会以任何方式调整大小或响应旋转(因为它不应该)。

这种行为一直持续到我杀死并重新启动应用程序。一旦它发生,我就找不到其他方法让它停止。重新启动后,一切都会再次正常工作,并将在不确定的时间内正常工作。我可以坐在那里推动,弹出,来回旋转,让我心满意足,没有任何问题。

我从来没有能够在模拟器中重新创建它。

它没有明显的原因发生,我无法让它发生。我会说 85% 的时间它都能正常工作。我以为我已经修复了很多次,但几天甚至几周都没有发生。然后,出乎意料地再次发生。

我在任何论坛中都找不到描述这种行为的帖子,所以我什至找不到开始调试的地方。状态栏怎么会从上到下摆动,并且视图不会以任何方式调整大小或旋转或响应。如果我知道如何做到这一点,我就会有一个开始的地方。

4

1 回答 1

6

UIWindow添加子类(在我的情况下,状态栏覆盖)时,我遇到了同样的问题。

解决方案是将rootViewController这个新的设置为已实现UIWindow的子类。这可以防止状态栏在不应该旋转时旋转。UIViewController-(BOOL)shouldAutorotate

于 2013-09-25T23:31:23.960 回答