1

次の 3 つのモーダル 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 に基づく通知です)。

ですから、これが私のバグなのか、Apple の設計どおりの動作なのか、それとも何なのかはわかりません。このような一連のモーダルがあることは少し奇妙ですが、望ましい効果が得られます。

誰からの提案にも感謝します。または、他に何もない場合の回避策の推奨事項。

4

0 に答える 0