したがって、カスタム UIWindow、カスタム UIViewController、およびカスタム UIImageView があります。
private class CoachingWindow : UIWindow
{
public CoachingWindow(...)
{
RootViewController = new CoachingOverlayViewController(...);
}
private class CoachingOverlayViewController : UIViewController
{
public CoachingOverlayViewController(...)
{
View = new CoachingOverlayView(...);
}
public override void DidRotate (UIInterfaceOrientation fromInterfaceOrientation)
{
...
}
public override bool ShouldAutorotate()
{
return true;
}
private class CoachingOverlayView : UIImageView
{
public CoachingOverlayView(...)
{
...
}
}
}
}
ウィンドウ、ビュー コントローラー、およびビューはすべて、最初に呼び出されたときに適切に表示されます。カスタム UIWindow は既存の UIWindows の残りの上にオーバーレイとして表示され、ビュー コントローラーは RootViewController として適切に割り当てられ、ビューは の View プロパティに割り当てられます。ビューコントローラー。したがって、すべて正しくレンダリングされます。
ただし、デバイスまたはシミュレーターを物理的に回転させると、オーバーライドされた DidRotate() および ShouldAutorotate() メソッドが呼び出されることはありません。
カスタムUIWindowを使用しているという事実と関係があるのではないかと考えています。おそらくウィンドウは、iOS からの方向変更の通知を受け取っていませんか? または、iOS はこれらの通知をビュー コントローラーに直接送信しますか? カスタムView Controllerであるため、View Controllerをこれらのイベントにサブスクライブさせる必要があるのでしょうか???
MonoTouch と iOS 6 を使用しています。
どんな提案も素晴らしいでしょう。ここで壁に頭をぶつけています。