【问题标题】:shake gesture doesn't work摇晃手势不起作用
【发布时间】:2011-05-10 20:31:19
【问题描述】:

我使用一个代码来检测抖动,并且该代码在设备上工作,但是当我在模拟器上使用抖动手势时不起作用,为什么?

我使用下面的代码来检测它

#define kAccelerationThreshold      2.2
#define kUpdateInterval         (1.0f/10.0f)

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
        if (fabsf(acceleration.x) > kAccelerationThreshold || fabsf(acceleration.y) > kAccelerationThreshold || fabsf(acceleration.z) > kAccelerationThreshold)
            ...
}

【问题讨论】:

    标签: iphone xcode ios4


    【解决方案1】:

    'The Shake Gesture'(模拟器上可能的那个)不是带有加速度计的自定义抖动检测,而是 iOS 检测到的抖动事件。所以你不能使用你的加速度计 didAccelerate 方法来检测它。查看this question 的第二个答案(不是已接受的答案),了解如何检测摇晃手势。

    【讨论】:

    • 如果你的意思是回答“Kendall Helmstetter Geln”。它不起作用
    • 确实如此。我已经做到了。你可能在某处遗漏了一些东西。在 stackoverflow 和谷歌上搜索“iPhone 运动检测”,您会找到更多答案,详细告诉您如何执行此操作。它确实适用于模拟器。
    【解决方案2】:

    看看 UIResponder 的 motionEnded: 方法。您可以在窗口、视图或视图控制器上实现 motionEnded 以检测抖动,如下所示:

    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 
    {
        if (event.type == UIEventSubtypeMotionShake) 
        {
            // your code here
    
        }
    }
    

    在我的应用程序中,我需要一个应用程序范围的抖动处理程序。所以我将 UIWindow 子类化(我的应用程序有一个窗口,大多数情况下)并将处理程序放在该子类中。

    【讨论】:

      【解决方案3】:

      它可以工作,但不能在其他答案中列出的模拟器中。忽略这一事实,并通过其他方式(例如按钮等)在模拟器中调用该方法。我不建议使用与您可以通过模拟器触发的事件相对应的实际抖动事件。除非你想让你的用户把他们的手机到处乱扔。内置抖动检测不是很灵敏。

      【讨论】:

        猜你喜欢
        • 2011-07-11
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2018-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多