如何通过手势识别器检测圆形手势?

ohh*_*hho 11 iphone ipad uigesturerecognizer

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

Six*_*tto 15

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

如果是前者,你几乎就是自己.您当然可以将您的解决方案实现为您自己的自定义手势识别器:这是Apple所期望的,并且有一些文档可以帮助您入门(尽管我还没有看到很多工作示例).另请参见如何正确子类化UIGestureRecognizer.

作为一般的方法中,我认为该区域为手势作为环形形状:与中心区域Ç,内半径R1和外半径R2.当用户触及时,您可以使用毕达哥拉斯定理计算与c的距离,以及与您喜欢的trig函数的角度.这样,您可以确定触摸是否在区域内.当用户拖动时,您可以根据角度更新控制值.在某些时候,他们要么触地,要么拖到区域之外,这将结束手势.我建议允许触摸在r1内部或r2外部漂移很远:手指是不精确的工具.

  • @Daniel,我在[app] [2]中使用了[KTOneFingerRotationGestureRecognizer] [1]。[1]:https://github.com/kirbyt/KTOneFingerRotationGestureRecognizer [2]:http://itunes.apple.com/app/minimalist-timer/id487145086?mt = 8 (2认同)

Dan*_*iel 6

由于没有找到解决方案,并且从@ sixten的回答中获得了逻辑灵感,我已经离开并创造了一些有用的东西,它不是防弹,但它似乎做了我现在需要的东西.

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

https://bitbucket.org/danielphillips/dpcirculargesturerecognizer