self.interfaceOrientation 导致在 iOS 4.x 上调用 shouldAutorotateToInterfaceOrientation

Posted

技术标签:

【中文标题】self.interfaceOrientation 导致在 iOS 4.x 上调用 shouldAutorotateToInterfaceOrientation【英文标题】:self.interfaceOrientation causing shouldAutorotateToInterfaceOrientation to be called on iOS 4.x 【发布时间】:2012-10-03 07:24:24 【问题描述】:

当我在模拟器或设备中测试 4.x 下的单视图应用程序时,在启动时,主 UIViewController 的 shouldAutorotateToInterfaceOrientation: 方法被精确调用 3046 次(在设备上)或 23777 次(在模拟器上),然后崩溃。 ...更新...

更新:在我拥有的方法中 UIInterfaceOrientation currentOrientation = self.interfaceOrientation;

这似乎是罪魁祸首,它导致 shouldAutorotateToInterfaceOrientation: 再次被调用,因此将其置于无限循环直到崩溃。有谁知道为什么?它在 ios 5+ 中不这样做

【问题讨论】:

【参考方案1】:

如果需要对方向变化事件做任何处理,请改用此方法,

 - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
 
    [self HandleOrientationChange:toInterfaceOrientation];
 

 -(void) HandleOrientationChange:(UIInterfaceOrientation) orientation
  

【讨论】:

不建议将这种类型的代码放在 shouldAutorotateToInterfaceOrientation: 中吗?你能指点我说的文档吗? 文档只是说:不要尝试获取 interfaceOrientation 属性的值。 (顺便说一句,这个方法在 ios 6.0 中被废弃了)developer.apple.com/library/ios/#documentation/uikit/reference/…: 感谢您的参考。我会试试看。

以上是关于self.interfaceOrientation 导致在 iOS 4.x 上调用 shouldAutorotateToInterfaceOrientation的主要内容,如果未能解决你的问题,请参考以下文章

旋转后图像变质

使用相机时如何获取设备的方向?