写一个循环的UIGestureRecognizer

时间:2010-07-06 12:48:42

标签: uigesturerecognizer

我正在寻找在iPhone / iPad应用程序中创建一个滚轮。我知道您可以将UIGestureRecognizer子类化以编写自己的识别器。有没有人知道如何(主要是它背后的数学)创建一个可以检测圆周运动的数学,也许与平移手势相结合?

由于

1 个答案:

答案 0 :(得分:5)

这个问题并不容易。我花了一些时间考虑一个可能的解决方案:
我认为你需要的是你必须设置的一些关键属性:

  • 圆周运动的中心(在这种情况下没问题,因为你知道转轮的中心)
  • 应该发生运动的走廊。
    • 所以你需要内半径和外半径。

现在你有这样的事情(遗憾的是我没有足够的声誉所以只有链接:http://img17.imageshack.us/img17/4416/bildschirmfoto20100721u.png

现在这背后的数学开始了:
首先,您将在四个季度安排走廊:

  • 从0°到90°
  • 从90°到180°
  • 从180°到270°
  • 从270°到360°

对于每个季度,您必须弄清楚手指何时移动(假设0°线从中心点直到顶部):

  • 如果手指在第一个四分之一处,您知道x是否向左变化,旋转必须是逆时针方向。如果x向右变化,则旋转必须是顺时针方向。

为所有季度应用此逻辑。现在您知道旋转轮是顺时针还是逆时针移动。你必须确保手指永远不会离开走廊(如果你测试这个逻辑并且由于离开走廊而停止运动,使走廊更大 - 感谢CrystalSkull的评论:使用44px作为最小宽度走廊适用于人机界面指南)。

<强> Sumary
所以现在你可以得出结论,你需要一个中心点和手指可以移动的走廊。 如果旋转是顺时针或逆时针,你必须弄清楚手指在哪个四分之一处并找出(使用x值)。

我希望这对你有所帮助。