加速度计震动只发出一次声音?

qua*_*tum 1 iphone cocoa-touch

我正在尝试实现一个功能,检测用户摇晃他/她的iPhone,然后该应用程序将发出吠声.到目前为止,我已经在下面附上了代码,并且它有效.但是,如果我更加努力地晃动手机,它会在另一个之后立即制造2个或更多的树皮.我如何确保每次摇动只发生一次,无论多么努力?

- (void)accelerometer:(UIAccelerometer *)accelerometer 
    didAccelerate:(UIAcceleration *)acceleration {
        if (acceleration.x > kAccelerationThreshold ||
            acceleration.y > kAccelerationThreshold ||
            acceleration.z > kAccelerationThreshold) {
            // BARKING SOUND
        }
    }
Run Code Online (Sandbox Code Playgroud)

iYa*_*sin 5

您可以使用NSTimer - 请看这里:"计时器"部分

播放声音后,将名为"hasBarked"的布尔变量设置为YES,然后调用计时器.两秒钟后,计时器将"hasBarked"设置为NO并禁用自身.最后,将整个声音播放方法放入if块中,如果"hasBarked"为NO,则只播放声音.