如何用 CMMotionManager 替换 UIAccelerometer?

2013-12-05 13:39:30 +08:00
 troyl
刚刚开始自学 iOS 开发。

跟着 Ray Wenderlich 上的一篇教程写了一个基于地址的显示增强(AR)小 App。

教程地址:http://www.raywenderlich.com/42266/

在那篇教程里面,用了一个 Github 上的 iPhone AR Toolkit (https://github.com/nielswh/iPhone-AR-Toolkit ),然而这个项目已经很久没有更新了(虽然在 issues 里面作者保证说开始让它适应 iOS7)……

在这个 iPhone AR Toolkit 里面,用到了一个从 iOS 5 以后就被 Deprecate 的类 UIAccelerometer,所以我跟着教程写完以后在我的 iPhone 上 run 的时候,Xcode 就会出现 3 个 warning,都跟 UIAccelerometer 有关:



具体的症状就是,当你切换到显示增强的 view 的时候(照相机 view),所有的地址名称和距离,都会固定在屏幕的中间,而且还会出现一个叠加在另一个上面的情况。非常闹心。



根据 Xcode 的提示和网上的搜索,我知道要用 CMMotionManager 来实现这个功能,可是因为刚刚接触 iOS 和 Objective-C,对一切都不熟悉,所以希望 v2ex 的大牛能指点一二。

这里是源代码:http://d.pr/f/AHng

P.S. 我自己加了几个小功能。比如在 Map View 长按加一个 Marker,或者手动添加一个地址信息(其他地址信息都是通过 Google Places API 获取的)到自己的数据库等等。(但我想上面的问题不是这些功能引起的。)

再次致谢。
4583 次点击
所在节点    iDev
3 条回复
txx
2013-12-05 13:47:26 +08:00
CM的 API 很简单的....就是一个block 接受 加速计的数据而已。
有时间写这篇帖子的时间不如去看一下官方的文档和demo...
(我没看懂文档,我是直接看demo的..
troyl
2013-12-05 14:13:58 +08:00
@txx 多谢!

我自己也看了官方文档的 Demo,但是将对应的内容(比如说 accelerometerUpdateInterval 这些)更改到代码里就会出错……

我想,自己使用 CMMotionManager 可能确实不难,但是要将一个已经写好的第三方 kit 正确更改保证其能在 iOS 7 下正常运行对我来说,确实还是很有难度的。

所以可以帮我看下源代码吗?因为我不确定是否只将 UIAccelerometer 部分改掉就可以了。
troyl
2013-12-08 06:18:02 +08:00
解决了~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/91930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX