我是iPhone开发的新手。我有我的“根”视图,它正在实施
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
这个实现工作得很好。在用户按下按钮后,我执行pushViewController将新视图推送到堆栈。如果用户摇动iPhone,即使当前“弹出”视图未实现任何与加速度计相关的方法,加速计也会触发。在我看来,即使将不同的视图推入堆栈,根视图仍然处于活动状态。为什么不是活动视图的视图仍然响应加速度计?
由于
汤姆
答案 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处于活动状态 }