0

我对 iPhone 开发很陌生。我有我的“根”视图,它正在实施

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

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

谢谢

汤姆

4

2 回答 2

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
}
于 2011-05-17T04:49:07.443 回答
0

我认为加速度计对活动或非活动视图控制器一无所知。

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

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

if (self.view.window!=nil) { // viewController 处于活动状态 }

于 2011-05-17T04:47:31.377 回答