0

ModalPresentationStyleがUIModalPresentationStyle.CurrentContextに設定されているモーダルViewControllerを提示して、バックグラウンドで親ビューを表示しています。私を本当に混乱させるのは、iPadの向きを変更しようとすると、親コントローラーが元の向きを維持したまま、モーダルビューのサイズが正しく変更されることです。

問題は、向きの変更通知を親コントローラーに転送することはできますか、それとも新しい向きで再レイアウトするように強制することはできますか?

4

1 に答える 1

0

向きの変更について親コントローラーに通知する必要があります。この動作は ios5 などで変更されました。例えば:

NSNotificationCenter.DefaultCenter.PostNotificationName("changeOrientation", null);

これは、向きが変わったときにモーダル コントローラーから送信する必要がある通知です。親コントローラーは、モーダル コントローラーを表示する前、または ViewDidAppear メソッドでこの通知をサブスクライブする必要があります。

this.orientationObserver = NSNotificationCenter.DefaultCenter.AddObserver("changeOrientation", HandleRotation);

...そして、モーダル コントローラが非表示になった後、または ViewWillDisappear メソッドで登録解除します (ViewDidAppear で登録されている場合)。

NSNotificationCenter.DefaultCenter.RemoveObserver (this.orientationObserver);

このアプローチの良い点は、モーダル コントローラーで親コントローラーへの直接参照がなく、その逆もありません。

于 2012-07-08T17:05:49.957 に答える