CoreMotion - 确定iOS设置中是不是禁用运动的方法?

Posted

技术标签:

【中文标题】CoreMotion - 确定iOS设置中是不是禁用运动的方法?【英文标题】:CoreMotion - way to determine if motion is disabled in iOS Settings?CoreMotion - 确定iOS设置中是否禁用运动的方法? 【发布时间】:2013-12-11 20:41:16 【问题描述】:

ios 7 上,用户可以在设置 -> 常规 -> 辅助功能 -> 减少动作中选择禁用设备动作。

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

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

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

谢谢!

【问题讨论】:

@MatiasForbord 这不是同一个问题。这个问题与设备动画效果(例如应用程序启动动画、UIAlertView 叠加效果和倾斜设备时主屏幕壁纸移动)的运动减少有关,而不是设备记录的运动活动是否可以被 3rd 方应用程序查看。 是的,你是对的 - 它不是重复的。不过,确定您认为自己需要什么是在该问题的答案中完成的。太糟糕了,你还没有办法弄清楚你需要的设置! 【参考方案1】:

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

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

更新:正如 John 在 cmets 中提到的那样,iOS 8 中似乎有一个 API:请参阅 ***.com/a/25453082/2904769。

【讨论】:

感谢您为我指明正确的方向。我之前也看过UIMotionEffect 库,也没有。 见***.com/a/25453082/2904769。在 iOS 8 中有一个 API。

以上是关于CoreMotion - 确定iOS设置中是不是禁用运动的方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CoreMotion 框架确定设备位置?

ios中陀螺仪CoreMotion的用法

使用 swift 3 在 IOS 10 coremotion 中选择姿态参考系

iOS开发-CoreMotion框架

iOS CoreMotion CMAttitude 相对于北极

如何使用 CoreMotion 在空间中获取设备方向