【问题标题】: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 方应用程序查看。
  • 是的,你是对的 - 它不是重复的。不过,确定您认为自己需要什么是在该问题的答案中完成的。太糟糕了,你还没有办法弄清楚你需要的设置!

标签: ios core-motion cmmotionmanager


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-03-29
  • 2013-09-06
  • 1970-01-01
  • 2013-04-15
  • 2014-03-11
  • 1970-01-01
  • 2023-04-02
  • 2019-11-07
相关资源
最近更新 更多