【问题标题】:iPhoneXR returning to rootview controller after rotationiPhone XR 旋转后返回根视图控制器
【发布时间】:2019-08-18 02:23:42
【问题描述】:

我目前有一个仅在 iPhone XR 上报告的错误。

我们有一个自定义相机,它强制旋转到横向,当它完成时,它会强制视图回到纵向。

只有使用 iPhone XR 的用户才提到过这个错误。它发生在调用强制旋转和弹出视图控制器之后。它不是返回到前一个视图,而是通过三个视图控制器返回到根视图控制器。 (编辑:据我所知,其他视图控制器根本没有被调用/显示/加载)

我发现即使我们没有打电话也发生了这个错误..

self.navigationController?.popViewController(animated: true)

所以这个问题特别发生在这一行..

UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")

然后禁用此行后,下一个屏幕以横向显示。但是如果我将手机物理旋转到纵向,它会再次跳回根视图控制器。

备注

  • 我已确认在 iPhone 6s 和旧设备上不会发生此错误。
  • 我无法在模拟器上测试相机功能,这令人沮丧。
  • 我的应用程序中有零代码调用根控制器的任何返回。
  • 在这个根目录下有一个拆分视图控制器

是否有一些我不知道的新功能,为什么新手机上的轮换调用会返回到根视图控制器?

更新: 这是我目前在这个问题上的领导。 Popover Nil On Rotation

【问题讨论】:

    标签: ios rotation uiinterfaceorientation


    【解决方案1】:

    问题在于这一行

    UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
    

    是非法的,而且一直都是。您对强制轮换的整个概念是错误的。强制旋转的唯一合法方法是全屏呈现的视图控制器,它具有一组不同的支持方向。

    【讨论】:

    • 感谢您的回复,“非法”一词是否正确?不好的做法会是一个更好的描述。无论如何,我刚刚通过删除 SplitViewController 发现我的错误消失了。所以有一个问题。我认为我们之所以采用这种方式强制旋转,是因为我们需要在自定义相机中拍摄正面朝下的图像,如果我们不强制图像,用户会拍错照片。我会继续看你的建议!
    • 非法是对的。如果 Apple 发现您这样做,您将被 App Store 屏蔽。
    • 很高兴知道!为什么他们甚至会提供此代码?
    • 他们没有。有人发现了一个黑客,人们买了它。但苹果从未授权过。
    【解决方案2】:

    所以我找到了一个我正在发布的解决方案,而不是贬低马特的回应,它提供了对更好实践的深刻见解。

    问题是在较新的设备上旋转时拆分视图控制器使弹出框为零,因此返回到根目录。我在这里找到了关于这种行为的解释 - Modal disappearing after rotating UISplitViewController

    简而言之,我删除了拆分视图控制器,并将寻找更好的替代方案来支持 iPad。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多