如何在具有单独视图的控制器中使用加速度计?
Posted
技术标签:
【中文标题】如何在具有单独视图的控制器中使用加速度计?【英文标题】:How can the accelerometer be used in a controller with a separate view? 【发布时间】:2010-03-23 16:04:15 【问题描述】:我正在尝试让加速度计在单独的视图中检测抖动,但没有调用加速度计方法?
当我在控制器 viewDidLoad 方法中放置代码以设置加速度计属性并在实现文件中添加 ......didAccelerate:(UIAcceleration *) 加速度时,检测到控制器抖动。
我是 iphone 开发的新手,认为可能是代码:
accelerometer.delegate = self;
应该指向视图?而不是自己?
任何帮助将不胜感激。我真的不知道如何解决这个问题?
【问题讨论】:
【参考方案1】:如果您的加速度计回调方法未被调用,则很有可能您的应用程序委托(或其他自定义类)不支持 UIAccelerometerDelegate
类。一些非常松散的伪代码,用于在您的应用程序委托中进行该声明...
@interface MyApplicationDelegate: UIApplicationDelegate<UIAccelerometerDelegate>
.. class definition stuff ..
在此处查看 Apple 文档...
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedFeatures/AdvancedFeatures.html
并查看访问加速度计事件部分
【讨论】:
谢谢 Rob :) 我快到了,希望它很快就能工作。问题是我有一个单独的视图和一个控制器,并且已将API 参考与初学者在 Cocoa/Objective-C 的实际代码中实际使用 API 之间似乎经常存在认知脱节。
此示例代码展示了视图控制器如何访问 iPhone OS 应用程序中的加速度计。
iPhone Dev Site link
提示:您是否设置了更新间隔?
【讨论】:
感谢您的帮助。我可以让加速度计在控制器类文件中工作,但不能在单独的 UIView 对象中工作。我确定我错过了一些非常明显的东西。更新间隔设置为:accelerometer.updateInterval = 1.0f/60.0f; 终于搞定了。移除 UIView 并将所有代码放在控制器中。不是最好的解决方案,但它可以工作并且稍后会重新考虑。感谢您的所有帮助:)以上是关于如何在具有单独视图的控制器中使用加速度计?的主要内容,如果未能解决你的问题,请参考以下文章