1

我有三个模态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 的通知)。

所以,我不知道这是否是我的错误,或者这是否是苹果设计的行为,或者什么。我知道有一系列这样的模态有点奇怪,但它确实提供了预期的效果。

将感谢任何人的任何建议;或解决方法的建议,如果没有别的。

4

0 回答 0