Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone在震动时执行代码_Iphone_Progress Bar_Shake - Fatal编程技术网

iPhone在震动时执行代码

iPhone在震动时执行代码,iphone,progress-bar,shake,Iphone,Progress Bar,Shake,我有以下代码: - (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ if (motion == UIEventSubtypeMotionShake){ NSLog(@"Detected a shake"); } } 这段代码在震动开始时记录NSLog,或者我可以实现motionEnded,然后在震动结束时记录NSLog,但我想要的是在震动期间执行代码(iPhone震动时进度条从0

我有以下代码:

- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{
    if (motion == UIEventSubtypeMotionShake){
        NSLog(@"Detected a shake"); }
}
这段代码在震动开始时记录NSLog,或者我可以实现motionEnded,然后在震动结束时记录NSLog,但我想要的是在震动期间执行代码(iPhone震动时进度条从0到100)


你能帮我一下吗?

在运动开始回调中,你应该创建一个执行函数的线程。这个函数应该在震动过程中完成你想做的事情。调用motionEnded回调时,应该终止线程

有关更多信息,请参阅NSThread文档

最值得注意的是:


是的,但问题是motionEnded有时无法识别,即使您不摇晃它,它仍会继续运行该功能。您还应该侦听
-motionCancelled:withEvent:
。将始终调用that或
-motionEnded:withEvent:
。然而,仔细看一下文档,如果抖动动作“持续时间过长”,它看起来将被取消。我找不到“太长”是多长的具体数字。如果这是一个问题,您将不得不更直接地收听加速计数据。