繁体   English   中英

摇动手势不起作用

[英]shake gesture doesn't work

我使用代码检测抖动和此代码在设备上工作,但当我在模拟器上使用摇动手势不起作用为什么?

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

#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)
            ...
}

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

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

    }
}

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

“Shake Gesture”(可能在模拟器上使用)不是使用加速度计的自定义抖动检测,而是iOS检测到的抖动事件。 所以你不能使用你的加速度计didAccelerate方法来检测它。 检查此问题的第二个答案(不是接受的答案)以查看如何检测摇动手势。

它可以工作,但不是在其他答案中列出的模拟器中。 只是忽略这个事实,并通过其他方式(例如按钮等)在模拟器中调用该方法。 我不建议使用与您可以通过模拟器触发的事件相对应的实际摇动事件。 除非您希望您的用户将手机丢到各处。 内置震动检测不是很敏感。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM