我正在尝试实现类似音量控制的圆形按钮。目前我可以通过手势识别器检测滑动。如何在按钮上检测圆形手势(顺时针和逆时针)?谢谢!
答案 0 :(得分:15)
您是在寻找单触手势(如圆形滑块)还是双触手势(如抓住并转动现实世界的旋钮)?如果是后者,请查看UIRotationGestureRecognizer
。
如果是前者,你几乎就是自己。您当然可以将您的解决方案实现为您自己的自定义手势识别器:这是Apple所期望的,并且some documentation to get you started(虽然我没有看到很多工作示例)。另请参阅How to correctly subclass UIGestureRecognizer。
作为一般方法,我将手势区域视为圆环形状:中心 c ,内半径 r1 和外半径的区域 R2 。当用户触摸时,您可以使用毕达哥拉斯定理计算与 c 的距离,以及与您喜欢的trig函数的角度。这样,您可以确定触摸是否在区域内。当用户拖动时,您可以根据角度更新控制值。在某些时候,他们要么触地,要么拖到区域之外,这将结束手势。我建议允许触摸在 r1 内部或 r2 之外偏离:手指是不精确的工具。
答案 1 :(得分:6)
由于没有找到解决方案,并且从@ sixten的回答中获得了逻辑灵感,我已经去创造了一些有用的东西,它不是防弹的,但它似乎做了我现在所需要的。
请任何人,分叉,克隆,使用,改进,开源,这是我的回购链接:
https://bitbucket.org/danielphillips/dpcirculargesturerecognizer
答案 2 :(得分:0)
您是否尝试过编写自己的手势识别器?文档中有详细说明。
答案 3 :(得分:0)
Best Way将实施Custom Gesture Recognizer。我不知道您是否希望检测到Discreet Gesture(一旦检测到整圆就会调用事件处理方法)或Continues Gesture(每次在圆形路径上移动手指时都会调用事件处理方法)。
可能用户可能无法画出完美的圆圈,而@Sixten Otto提供的解决方案也不错。