在iOS 7上,用户可以在“设置”中选择禁用设备动作 - >一般 - >辅助功能 - >减少运动。
我正在创建基于UITableView滚动的UI效果,所以我没有使用CMMotionManager
或CoreMotion
框架来创建任何动作效果。
但是,我想尊重用户的设置,如果用户在“设置”中启用了Reduce Motion
,则无法创建动作效果。
CMMotionManager
includes an instance method deviceMotionActive
检查它是否有效(我假设这是正确的检查),但是,我不想将管理器初始化为做这个检查,遗憾的是我找不到任何关于类方法的文档,它会返回类似的布尔值,有点像MFMessageComposeViewController
上存在类方法来检查iMessage / SMS可用性(+(BOOL)canSendText
)等等上。
谢谢!
答案 0 :(得分:0)
你混淆了两个叫做“动作”的东西。 CMMotionManager用于访问报告用户如何物理移动设备的传感器,例如陀螺仪和加速度计。它与动画效果无关,如用于动画视图的UIMotionEffect对象。
deviceMotionActive方法仅指示您的应用当前是否已注册以接收来自CoreMotion的动画更新。仅当您的应用程序调用了CMMotionManager startXXXUpdate方法之一时,才会出现这种情况。同样,它与用户设置或UIMotionEffect对象无关。
更新:正如John在评论中提到的那样,iOS 8中似乎有一个API:请参阅stackoverflow.com/a/25453082/2904769。