在iOS 7上,用户可以在"设置"->"通用"->"辅助功能"->"减少运动"中选择禁用设备运动。
我正在创建基于UITableView滚动的UI效果,所以我没有使用CMMotionManager
或CoreMotion
框架来创建任何运动效果。
但是,如果用户在"设置"中打开了Reduce Motion
,我希望尊重用户的设置,而不是创建运动效果。
CMMotionManager
包括一个实例方法deviceMotionActive
,用于检查它是否处于活动状态(我认为这是正确的检查),然而,我不希望为了进行此检查而初始化管理器,遗憾的是,我找不到任何关于类方法的文档,该类方法将返回类似的布尔值,有点像MFMessageComposeViewController
上存在检查iMessage/SMS可用性(+(BOOL)canSendText
)等的类方法
谢谢!
您混淆了两个称为"运动"的独立事物。CMMotionManager用于访问传感器,如陀螺仪和加速度计,这些传感器报告用户如何物理移动设备。它与设置视图动画时使用的运动效果(如UIMotionEffect对象)无关。
deviceMotionActive方法仅指示您的应用程序当前是否已注册以接收来自CoreMotion的运动更新。只有当您的应用程序调用了CMMotionManager startXXXUpdate方法之一时,才会出现这种情况。同样,它与用户设置或UIMotionEffect对象无关。
更新:正如John在评论中提到的,iOS 8中似乎有一个API:请参阅stackoverlow.com/a/24553082/2904769。