0

在 iOS 7 上,用户可以在 Settings -> General -> Accessibility -> Reduce Motion 中选择禁用设备运动。

我正在创建基于 UITableView 滚动的 UI 效果,因此我没有使用CMMotionManagerCoreMotion框架来创建任何运动效果。

但是,如果用户在“设置”中打开,我想尊重用户的设置并且不创建动作效果Reduce Motion

CMMotionManager 包括一个实例方法 deviceMotionActive来检查它是否处于活动状态(我假设这是正确的检查),但是,我宁愿不必为了进行此检查而初始化管理器,遗憾的是我找不到任何关于类方法的文档这将返回一个类似的布尔值,有点像存在类方法MFMessageComposeViewController来检查 iMessage/SMS 可用性(+(BOOL)canSendText)等等。

谢谢!

4

1 回答 1

0

您混淆了两个称为“运动”的独立事物。CMMotionManager 用于访问传感器,例如陀螺仪和加速度计,它们报告用户如何物理移动设备。它与动画视图中使用的运动效果(如 UIMotionEffect 对象)无关。

deviceMotionActive 方法仅指示您的应用当前是否已注册以接收来自 CoreMotion 的运动更新。仅当您的应用调用了 CMMotionManager startXXXUpdate 方法之一时,这才是正确的。同样,它与用户设置或 UIMotionEffect 对象无关。

更新:正如约翰在评论中提到的,在 iOS 8 中似乎有一个 API:参见 stackoverflow.com/a/25453082/2904769。

于 2013-12-11T21:17:36.077 回答