2012-10-21 47 views
0

我有以下代码:iPhone摇晃过程中执行代码

- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
    if (motion == UIEventSubtypeMotionShake){ 
     NSLog(@"Detected a shake"); } 
} 

此代码NSLogs当振动开始了,我也可以实施motionEnded然后将它的NSLog当振动结束,但我要的是执行代码在抖动期间(iPhone晃动时进度条从0到100)。

你能帮我解决吗?

回答

0

在动作开始回调时,您应该创建一个执行函数的线程。该功能应该做你想做的事情“在”摇晃期间。当调用motionEnded回调函数时,您应该终止该线程。

查看NSThread文档以获取更多信息。

最值得注意的是看:

+0

是的,但问题是,motionEnded有时不能确认,保持甚至运行的功能,如果你不要动摇它 – 1337code

+0

你还应该听取'-motionCancelled:withEvent:'。无论是那个还是'​​-motionEnded:withEvent:'都会被调用。然而,如果仔细观察文档,看起来如果“过长”,摇动手势将被取消。我无法找到“太长”的时间长短的具体数字。如果这是一个问题,您将不得不更加直接地收听加速度计数据。 – drewag