iPhone XR 旋转后返回根视图控制器

iPhoneXR returning to rootview controller after rotation

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

我们有一个自定义相机,强制旋转为横向,完成后,它强制视图返回纵向。

该错误仅由具有 iPhone XR 的用户提及。它发生在调用强制旋转和弹出视图控制器之后。它不是 return 返回到前一个视图,而是通过三个视图控制器返回到根视图控制器。 (编辑:据我所知,其他视图控制器根本不是 called/displayed/loaded)

我发现即使我们没有调用这个错误也会发生..

self.navigationController?.popViewController(animated: true)

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

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

然后禁用此行后,下一个屏幕出现在横向。但是,如果我将 phone 物理旋转为纵向,它会再次跳回到根视图控制器。

备注

是否有一些我不知道的新功能,为什么轮换调用新 phones return 到根视图控制器?

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

问题是这一行

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

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

所以我找到了一个解决方案,我正在发布,而不是打折 matt 的回复,它提供了对更好实践的深刻见解。

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

简而言之,我删除了 Split View Controller,并将寻找更好的替代方案来支持 iPad。