我的主要UIViewController会覆盖willRotateToInterfaceOrientation:duration:
以使背景视图适应正确的方向。这样在停留在视图中时效果很好。
但在我的应用程序中,某些用户操作的结果可能导致呈现另一个“女儿”UIViewController。当用户完成该女儿UIViewController时,她通常会返回主视图控制器。我的代码调用dismissModalViewControllerAnimated:
来执行此操作。
当女儿UIViewController在屏幕上时,用户更改iPad方向时会出现此问题。然后,主UIViewController将永远不会看到对willRotateToInterfaceOrientation:duration:
的任何调用,并且其背景视图将是不正确的。
此设置在iOS 4中正常运行:dismissModalViewControllerAnimated:
的iOS 4实施调用了UIWindow
的{{1}},其_setRotatableClient:toOrientation:updateStatusBar:duration:force:
调用了willRotateToInterfaceOrientation:duration:
显然,iOS 5的此行为已更改。
在iOS5下我的视图不在屏幕上时,我期望如何实现方向更改?我应该查询UIViewController
中的当前方向吗?我这样做了,它解决了这个问题就好了,但我可能错过了一些东西。
答案 0 :(得分:2)
尝试通过Notification Center处理界面更改,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
在“orientationChanged”方法中做与界面相关的东西