所以,我有一个自定义 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,视图被分配给视图控制器。所以,这一切都正确呈现。
但是,当我物理旋转设备或模拟器时,永远不会调用重写的 DidRotate() 和 ShouldAutorotate() 方法。
我认为这可能与我使用自定义 UIWindow 的事实有关。也许窗口没有收到来自 iOS 的方向更改通知?还是 iOS 将这些通知直接发送到视图控制器?也许我必须以某种方式让视图控制器订阅这些事件,因为它是一个自定义视图控制器???
我正在使用 MonoTouch 和 iOS 6。
任何建议都会很棒。我在这里用头撞墙。