如何将 iPhone 抖动手势检测限制在特定情况下?

Posted

技术标签:

【中文标题】如何将 iPhone 抖动手势检测限制在特定情况下?【英文标题】:How to limit iPhone shake gesture detection to specific situation? 【发布时间】:2012-03-25 19:15:14 【问题描述】:

我成功实现了摇动手势,但现在我想将其限制为仅在一种特定情况下(在我的应用的选项面板中)激活。

我首先创建了 ShakeWindow 类,它是 UIWindow 的子类。在 ShakeWindow 中我添加了- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 来注册摇动手势。

接下来我去了 AppDelegate.m 并编辑 window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 以使用新的 ShakeWindow 而不是 UIWindow。

效果很好,但我如何限制它的功能?我刚刚开始使用 Objective-C,并且总体上认为自己是一个新手编码器,所以在回答时请记住这一点,谢谢!

我使用 Cocos2D 作为框架,如果这些我不使用 Interface Builder。

【问题讨论】:

【参考方案1】:

我可能是误会了,但是...

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 

    if (/* conditions where my app responds to shake */) 
        // respond to shake
    
    // otherwise, it's like it never happened

【讨论】:

我必须说,有时我会让最简单的事情看起来比实际更难。谢谢。

以上是关于如何将 iPhone 抖动手势检测限制在特定情况下?的主要内容,如果未能解决你的问题,请参考以下文章

保存并检测特定的摇动手势模式 iphone

检测 html5 移动设备中的抖动

iphone检测整个应用程序的抖动

检测 iPhone 移动是不是改变方向?

将平移手势识别器限制为特定圆圈

iOS - 检测应用程序中任何地方的抖动