所以,我有一个自定义 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(...)
{
...
}
}
}
}
第一次调用时,窗口、 View Controller 和 View 都正确显示:自定义 UIWindow 显示为现有 UIWindows 其余部分的覆盖, View Controller 被正确分配为 RootViewController, View 被分配给 View View Controller 的属性。因此,一切都正确呈现。
但是,当我物理旋转设备或模拟器时,重写的 DidRotate() 和 ShouldAutorotate() 方法永远不会被调用。
我认为这可能与我使用自定义 UIWindow 有关。也许窗口没有收到来自 iOS 的方向更改通知?或者 iOS 是否直接将这些通知发送到 View Controller ?也许我必须以某种方式让 View Controller 订阅这些事件,因为它是自定义 View Controller ???
我使用的是 MonoTouch 和 iOS 6。
任何建议都会很棒。我正在用头撞墙。
最佳答案
在 iOS 6 中您可以使用
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
{ ... }
关于ios - 自定义 UIViewController 未收到设备旋转时的方向更改通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498054/