2010-06-18 84 views
6

在我的应用程序的某个时候,我想暂时禁用旋转功能 - 有效地“锁定”代码中的方向,类似于iPad上的锁定切换开关硬件。如何暂时锁定iPad/iPhone的方向

我目前做:

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications] 

,当我通过,我呼吁:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications] 

虽然这一切似乎工作,API文档表明,应该永远是一个开始后面结束 - 我正在做的事情基本上是相反的。是否有更适合处理“锁定方向”的API?

回答

10

我认为这很简单,因为不响应控制器的方向更改。您可以根据传递的参数有条件地返回true或false,但并不总是必须返回true。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if (rand()%2 == 0) { // evaluate if I should allow rotate 
     return YES; 
    } else { 
     return NO; 
    } 
} 
+0

感谢 - 伟大的作品! – Eric 2010-06-18 22:43:28

+0

这就是我现在正在做的事情,但有一个缺点: 例如如果我** 0。**设备和视图控制器是在肖像模式。 ** 1。**将设备旋转到(比方说)景观(视图控制器也旋转),** 2。**锁定旋转。 ** 3。**将设备旋转为纵向(在这种情况下视图控制器不旋转,这很好)。 ** 4。**然后解锁旋转,然后UIViewController不会更新到肖像。我必须再次旋转它才能获得以上方法:( – nacho4d 2012-02-08 05:45:44

+0

)在这种情况下,只需听取加速度计重力并相应地调整自己 – slf 2012-02-09 02:54:16