在“非活动”视图中触发iPhone事件

时间:2011-05-17 04:31:56

标签: iphone objective-c ios stack pushviewcontroller

我是iPhone开发的新手。我有我的“根”视图,它正在实施

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

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

由于

汤姆

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

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

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

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

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