加速度计 didAccelerate 委托方法未在 iOS sdk 6.0 中调用

Posted

技术标签:

【中文标题】加速度计 didAccelerate 委托方法未在 iOS sdk 6.0 中调用【英文标题】:Accelerometer didAccelerate delegate method not getting called in iOS sdk 6.0 【发布时间】:2013-02-20 07:36:37 【问题描述】:

我正在开发应用程序来获取用户如何用力摇晃 ios 设备的阈值。我正在使用 iOS sdk 6.0。

我尝试了 UIResponder 委托方法 motionEnded:: 当设备被摇动时它会被调用,但没有提供足够的数据来证明某个人摇动设备的力度。 我进行了足够多的搜索,找到了使用 UIAccelerometer didAccelerate 回调方法的单一解决方案。但它没有被调用。是sdk的问题吗?由于此方法在 iOS 5 中已弃用。

我也尝试过 coreMotion 框架,但它提供了陀螺仪数据,显示设备旋转了多少,而不是摇了多少。 这样做的最佳方法是什么。 我关注了How do I detect when someone shakes an iPhone?,但没有找到有用的答案。

【问题讨论】:

只是为了确保,您是否已将 添加到类标题中的 @interface 声明中? 【参考方案1】:

我刚刚想通了。即使您执行摇晃手势或旋转模拟器,iOS 模拟器也不响应 UIAccelerometer 操作。不起作用。但如果你在设备上运行,你会发现同样的代码运行良好:)

【讨论】:

感谢您的回复,因为即使我是 iOS 开发人员。我没有 iPhone 或任何 Apple 产品!所以这教育了我! :) (Y)【参考方案2】:

试试这个,在你看来加载只是这样做:

UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = self;

这使它对我有用。根本不需要使用该变量,但它与将共享加速度计委托设置为 self 有关

【讨论】:

以上是关于加速度计 didAccelerate 委托方法未在 iOS sdk 6.0 中调用的主要内容,如果未能解决你的问题,请参考以下文章

如何在加速时从我的视图控制器外包视图更改操作?

未在委托上调用 CAAnimation 委托方法

UItextView 委托方法未在子视图内调用

如何在具有单独视图的控制器中使用加速度计?

UIPickerView 委托未在子视图中调用

UIPopoverController 委托未在解雇时被调用