2011-05-17 60 views
0

我对iPhone开发很新颖。我有我的“根”视图,它正在实施iPhone事件处于“不活跃”状态下的视图

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 

此实现工作得很好。在用户按下按钮后,我执行pushViewController将新视图推送到堆栈上。如果用户摇动iPhone,则即使当前“弹出”视图没有实现任何与加速度计相关的方法,加速计也会触发。在我看来,即使已将不同的视图压入堆栈,根视图仍然处于活动状态。为什么视图不是主动视图仍然响应加速度计?

感谢

汤姆

回答

1

Actually the root view controller is not inactive in this case. It's just not visible. It is still alive and can receive events.

在你的加速度计的委托,有一个标志,检查是否根视图是可见的。只有在根视图可见时才进行任何操作。

if (visible) { 

    // Do operations 
} 
+0

谢谢。你的建议帮助 – 2011-05-17 05:02:17

+0

@Tom Schreck:欢迎。 – EmptyStack 2011-05-17 05:09:15

0

我认为加速度不知道活动或不活动视图控制器东西。

你所做的唯一的事情就是将你的ViewController设置为一个委托(接收事件)给加速度计。在将另一个ViewController推入堆栈之后,您的原始ViewController将继续存在。所以它继续接收事件。

你必须自己处理这个 - 例如。通过检查一个局部变量或(但没有测试)通过检查视图的窗口属性。

如果(self.view.window!=无){// 的viewController是活动 }

相关问题