我有一个仅限肖像的视图控制器。当我旋转手机时,我想显示第二个仅限风景的视图控制器。我怎样才能在iOS 8上运行?
在iOS 7下,一切正常:我听UIDeviceOrientationDidChangeNotification
,然后在第一个上呈现横向视图控制器。我使用自定义动画控制器复制原生旋转动画。我为transform
属性设置了动画以将视图旋转到位,然后调用setStatusBarOrientation:animated:
来更新系统。
在iOS8上,视觉效果有效,但旋转后触摸处理在屏幕的右半部分被破坏。事实上,粉红色区域中任何地方收到的任何触摸都会映射到x = 414
。因此触摸注册,但分配了不正确的x
坐标。
这似乎与here描述的问题相同,其中该人描述仅在纵向窗框边缘周围的小条带上接收触摸。这似乎也与this problem有关。
问题似乎是底层的UIWindow没有被setStatusBarOrientation:animated:
的调用旋转。在调试器中查看它,我看到调用此函数会将 UIDevice 边界更改为横向,但UIWindow边界保持纵向。
根据docs
窗口的两个主要功能是提供一个区域,用于显示其视图并将事件分发给视图。
所以这种触摸分配功能似乎越来越严重。
有人可以建议一种在iOS 8中运行的方法吗?无论新的大小类和UITraitCollection的东西,我仍然应该能够将旋转变换应用于视图,而不是具有中断触摸处理。对?
或者,是否有更简单的方法将视图控制器呈现为横向而无需手动实现动画?
答案 0 :(得分:0)
尝试从应用委托代码中移除或注释掉以下行(如果存在):
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
您现在不需要它,它会影响iOS8上的旋转。
答案 1 :(得分:0)
我认为这是iOS 8的bug,我发现它已经在ios 8.3中修复了