检测连续/重复摇动

时间:2013-05-25 06:03:32

标签: ios objective-c

我正在编写的应用程序要求用户摇动设备X秒。

我尝试通过motionBegan执行此操作,但有时会有效。但有时在摇动过程中会调用motionEndedmotionCancelled,并且除非您完全停止摇动,否则motionBegan不再被调用。并且似乎没有办法检测设备是否当前正在晃动

App Store中有很多应用程序成功完成此操作,因此显然我缺少一些东西。

1 个答案:

答案 0 :(得分:1)

运动事件是离散的:一旦iOS检测到设备已被震动,它就会发送相应的事件,那就是 - 你没有办法告诉它你对长或短的震动感兴趣。事实上,文档here说:

  

如果摇动动作中断或者iOS确定动作无效后例如摇动持续时间过长,则会取消事件。

如果基本摇动动作事件不适合您的应用,则需要使用加速度计数据实施自己的自定义摇动检测。 This answer是一个很好的起点。