繁体   English   中英

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

[英]How to detect circular gesture via Gesture Recognizer?

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

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

如果是前者,那么您几乎是一个人。 您当然可以将您的解决方案实现为您自己的自定义手势识别器:Apple期望这样做,并且有一些文档可以帮助您入门 (尽管我没有看到很多可行的示例)。 另请参阅如何正确地将UIGestureRecognizer子类化

通常,我会将手势区域视为甜甜圈形状:一个具有中心c ,内部半径r1和外部半径r2的区域 当用户触地得分时,您可以使用勾股定理计算与c的距离,并使用您喜欢的触发函数计算角度。 这样,您可以确定触摸是否在区域内。 用户拖动时,可以基于角度更新控制值。 在某些时候,他们会触摸或拖动到区域外,这将结束手势。 我建议让触摸在r1内r2以外的地方走得很远:手指是不精确的工具。

由于找不到解决方案,并根据@sixten的回答得出了逻辑上的启发,我离开并创建了一些有用的东西,虽然它不是防弹的,但似乎可以满足我现在的需要。

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

https://bitbucket.org/danielphillips/dpcirculargesturerecognizer

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

最好的方法是实现“自定义手势识别器”。 我不知道您是要检测离散手势(一旦检测到整个圆便调用事件处理方法)还是继续手势(每次在圆形路径上移动手指都将调用事件处理方法)。

用户可能未画一个完美的圆,@ Sixten Otto提供的解决方案将是不错的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM