次の 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 の設計どおりの動作なのか、それとも何なのかはわかりません。このような一連のモーダルがあることは少し奇妙ですが、望ましい効果が得られます。
誰からの提案にも感謝します。または、他に何もない場合の回避策の推奨事項。