我正在编写的应用程序要求用户摇动设备X秒。
我尝试通过motionBegan
执行此操作,但有时会有效。但有时在摇动过程中会调用motionEnded
或motionCancelled
,并且除非您完全停止摇动,否则motionBegan
不再被调用。并且似乎没有办法检测设备是否当前正在晃动。
App Store中有很多应用程序成功完成此操作,因此显然我缺少一些东西。
答案 0 :(得分:1)
运动事件是离散的:一旦iOS检测到设备已被震动,它就会发送相应的事件,那就是 - 你没有办法告诉它你对长或短的震动感兴趣。事实上,文档here说:
如果摇动动作中断或者iOS确定动作无效后例如摇动持续时间过长,则会取消事件。
如果基本摇动动作事件不适合您的应用,则需要使用加速度计数据实施自己的自定义摇动检测。 This answer是一个很好的起点。