Objective c ios 5与ios 6中的自动旋转问题

Objective c ios 5与ios 6中的自动旋转问题,objective-c,ios,ipad,uiinterfaceorientation,uideviceorientation,Objective C,Ios,Ipad,Uiinterfaceorientation,Uideviceorientation,我有一个iPad应用程序,必须支持iOS 5.0及更高版本。我有一个bug,它在5.0/5.1中的行为与在6.0中的行为不同。问题是tabbarcontroller中的视图控制器推送模式视图,而模式视图又通过navigationController推送全屏视图。问题是,在全屏视图中,如果iPad旋转,底层的viewcontroller(tabbarcontroller中的一个)不会旋转。现在让我来分析一下iOS版本的差异: 首先,该viewController实现了shouldAutoRotat

我有一个iPad应用程序,必须支持iOS 5.0及更高版本。我有一个bug,它在5.0/5.1中的行为与在6.0中的行为不同。问题是tabbarcontroller中的视图控制器推送模式视图,而模式视图又通过navigationController推送全屏视图。问题是,在全屏视图中,如果iPad旋转,底层的viewcontroller(tabbarcontroller中的一个)不会旋转。现在让我来分析一下iOS版本的差异:

首先,该viewController实现了shouldAutoRotateToInterfaceOrientation(返回YES)以及willRotateToInterfaceOrientation和WillAnimateRotationInterfaceOrientation

在iOS 6.0中,我注意到没有调用旋转方法(willRotate…&willAnimate…),因此我注册它以接收UIDeviceOrientationIDChangeNotification通知,并在收到该通知而其他方法未执行时执行两个旋转方法的代码。这解决了iOS 6.0中的问题

问题是,在5.0/5.1中,正在执行旋转方法(willRotate…&willAnimate…),但视图没有旋转。如果“全屏视图”未显示在此视图控制器上方,且iPad旋转,则执行这两种方法并相应旋转视图

请帮忙。提前谢谢

除了上面提到的以外,我还尝试过其他的事情


我尝试检查UIDeviceOrientation并将其转换为UIInterfaceOrientation,然后调用[self-shouldAutorotateToInterfaceOrientation:xxx];视图仍然显示错误。

执行两种旋转方法时,请对视图进行CAAffinetTransformation。当你恢复正常时,再次用-90度做同样的动作


对于初学者来说,支持方向的API在iOS中已经改变,因此您可能希望尝试同时支持新方法和旧方法。我已经阅读了iOS 6.0发行说明,并没有实现该方法,只是因为我的问题是5.0/5.1,iOS 6.0的bug已经修复(尽管我可能会实施新方法以获得更好的效果)。