我需要帮助解决问题而不确定如何解决问题。基本上我有一个视图,通过使用加速度计切换到另一个视图,问题是它只能工作一次。当我回到第一个视图时,加速度计将不会再次工作,直到我重建项目。
这是我使用的方法:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
float aX = ABS(acceleration.x);
float aY = ABS(acceleration.y);
float aZ = ABS(acceleration.z);
if(sqrt(aX*aX+aY*aY+aZ*aZ)>1.5f)
{
SecondViewController *screen = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
//screen.words = self.easy;
[self presentModalViewController:screen animated:YES];
[screen release];
self.accelerometer.delegate = nil;
}
非常感谢任何形式的帮助。
答案 0 :(得分:0)
您可以设置BOOL以在呈现新视图控制器时暂时禁用加速度计处理并避免调用self.accelerometer.delegate = nil
完成模态转换后,您可以重新启用加速度计处理
编辑 - 例如:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
if(accelerometerEnabled) {
//... the accelerometer data handling goes here
}
此外,看起来我原本不了解所有问题 - 您还需要将加速计delagate重置为您想要用来处理加速度数据的任何视图控制器。那个(第二个)视图控制器也必须有 - (void)加速度计委托方法。
或者,您可以在根视图控制器中处理加速度数据,并创建该根视图的视图子视图。这样会更干净,因为你永远不必改变哪个控制器正在处理加速度。