我有三个模态VC,如下所示:
M1 是 UIModalPresentationFullScreen
M2 是 UIModalPresentationFormSheet
M3 是 UIModalPresentationFormSheet
M1调用M2;M2 呼叫 M3
因此,通常情况下,您会在背景中看到 M1,而 M2 作为 FormSheet。如果调用 M3,它将覆盖 M2,直到它关闭。
一切都很好,直到 M3 打开时发生旋转。在打开 M2 和 M3 的情况下旋转到任何方向时,M2 进入全屏视图(即使它是表单模式),并且 M3 正确显示为 M3 上方的表单;但 M1 完全不可见(因为它被全屏 M2 覆盖)。
旋转后,一切正常,但 M3 应该覆盖 M2,M1 应该在后台。但是发生的是M2在后台全屏,M3是正确的。
我在 M2 或 M3 中没有与旋转相关的代码。M1 只有以下内容:
- (void) deviceOrientationDidChange
{
collectionView.frame = [self collectionViewFrame];
}
它应该可以更改集合视图的框架(这是基于 UIDeviceOrientationDidChangeNotification 的通知)。
所以,我不知道这是否是我的错误,或者这是否是苹果设计的行为,或者什么。我知道有一系列这样的模态有点奇怪,但它确实提供了预期的效果。
将感谢任何人的任何建议;或解决方法的建议,如果没有别的。