我的应用程序是为 iOS7 编写的,我正在尝试将其更新到 iOS 8。我的应用程序配置为仅在横向左和横向右方向上工作。
对于 iOS 8,我更改了屏幕导航的顺序,并将其中一个模态屏幕更改为推送过渡。在主屏幕上,我在 UINavigationItem 上有两个 UIBarButtonItems。其中每一个都有分配给它们的推送 segue,用于连接到不同的屏幕。
当应用程序正在运行并且 UIBarButtonItems 之一被点击时,通过 segue 关联的屏幕按预期滑过主屏幕。后退按钮显示正常。点击后退按钮时会出现问题。屏幕没有像预期的那样向右滑动。
在运行 iOS 7 的 iPhone 4 上,屏幕始终向下滑动(朝向地面),无论设备是横向向左还是横向向右。
在运行 iOS 8 的 iPhone 6 Plus 上,调用的屏幕快速旋转到上下颠倒(顶部朝向主页按钮),然后滑到主页按钮一侧。同样,手机是横向向左还是横向向右并不重要。
我已经尝试将 preferredInterfaceOrientationForPresentation、shouldAutorotate 设置为 NO,并将 supportedInterfaceOrientations 设置为 UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeRight。似乎没有任何区别。
我的屏幕导航很简单,我没有使用任何自定义转换。这一切都是通过标准的推送转场。
我需要让屏幕“返回”转换再次正常工作。
非常感谢任何帮助!
最佳答案
我终于找到了导致我的屏幕滑动方向错误的原因。原来是重写UIViewController中的supportedInterfaceOrientations方法,返回UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft 混淆了 iOS 8 中的转换(以及运行 iOS 7 的设备)。这是在 iOS 7 中正常运行所必需的,但在 iOS 8 中显然会导致问题。所以一旦我删除了代码,屏幕转换又开始正常工作。
关于点击后退按钮时,iOS 8 屏幕滑动方向错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26005973/