我在willRotateToInterfaceOrientation:
方法中有一些代码。但是在方向改变后会调用它。
我希望在方向改变之前调用此方法。
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
//some code
}
任何人都知道为什么会发生这种情况......
答案 0 :(得分:0)
我有同样的问题,但找到了解决办法。刚开始收听设备定位事件:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector( detectOrientation )
name: UIDeviceOrientationDidChangeNotification
object: nil];
您的处理程序(上例中的detectOrientation
)将在-willRotateToInterfaceOrientation:toInterfaceOrientationduration:
方法之前调用,因此也会在以新方向呈现屏幕之前调用
请注意,对beginGeneratingDeviceOrientationNotifications
的每次通话都必须与对endGeneratingDeviceOrientationNotifications
(as noted in the docs)的通话相匹配。因此,如果您在-viewDidLoad
拨打第一个电话,请不要忘记在dealloc
拨打后者。
另一件需要注意的事情是,此方法会打开加速度计硬件,因此您的应用程序可能会消耗更多电池,但仍然有效(即,在您致电endGeneratingDeviceOrientationNotifications
之前)。