【问题标题】:How to detect circular gesture via Gesture Recognizer?如何通过手势识别器检测圆形手势?
【发布时间】:2011-01-05 03:54:29
【问题描述】:

我正在尝试实现类似音量控制的圆形按钮。目前我可以通过手势识别器检测到滑动。如何检测按钮上的圆形手势(顺时​​针和逆时针)?谢谢!

【问题讨论】:

    标签: iphone ipad uigesturerecognizer


    【解决方案1】:

    您是在寻找单触手势(如圆形滑块)还是两触手势(如抓住并转动现实世界的旋钮)?如果是后者,请查看UIRotationGestureRecognizer

    如果是前者,那么您几乎是靠自己。您当然可以将您的解决方案实现为您自己的自定义手势识别器:这是 Apple 所期望的,并且有 some documentation to get you started(尽管我还没有看到很多工作示例)。另见How to correctly subclass UIGestureRecognizer

    作为一般方法,我会将手势区域视为甜甜圈形状:中心为 c、内半径为 r1 和外半径的区域r2。当用户触地时,您可以使用勾股定理计算与 c 的距离,以及使用您最喜欢的三角函数的角度。这样,您可以确定触摸是否在区域内。当用户拖动时,您可以根据角度更新控件值。在某些时候,他们要么向上触摸,要么拖到区域外,这将结束手势。我建议允许触摸在 r1 内或 r2 外很远:手指是不精确的工具。

    【讨论】:

    【解决方案2】:

    由于未能找到解决方案,并且受到@sixten 回答的逻辑启发,我已经创建了一些有用的东西,它不是防弹的,但它似乎可以满足我现在的需要。

    请任何人,分叉它,克隆它,使用它,改进它,它是开源的,这是我的回购链接:

    https://bitbucket.org/danielphillips/dpcirculargesturerecognizer

    【讨论】:

    • 嗨,丹尼尔,感谢您的代码。如果有一个许可证文件,或者代码中包含许可证,那将是很好的,只是为了记账。
    • @Daniel - 太好了,我刚刚尝试过,完全没问题!:)
    【解决方案3】:

    您是否尝试过编写自己的手势识别器?文档中有详细说明。

    【讨论】:

      【解决方案4】:

      最好的方法是实现自定义手势识别器。我不知道您是否希望检测谨慎手势(一旦检测到整个圆圈,就会调用事件处理方法)还是继续手势(每次在圆形路径上移动手指时都会调用事件处理方法)。

      可能用户画不出一个完美的圆,@Sixten Otto 提供的解决方案会很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        相关资源
        最近更新 更多