我正在构建围绕手势识别的应用。 我已经构建了我的代码,识别了水龙头,滑动(即使用多个手指),捏。
现在我想在没有使用UILongPressGestureRecognizer的情况下识别长按手势,因为在我尝试之后,我对其他手势的识别进入了混乱状态。
我目前正在做的是我在touchesBegan中获得时间,在touchesMoved中我计算时差,如果它大于400ms(例如),我调用一个函数。 问题是这个功能只在手指移动一点时调用,而不是在它完全静止时调用。
另一种选择是在touchesBegan中设置一种延迟,并在400ms后检查手指是否仍在屏幕上,然后调用该功能。
如果不阻止其余的手势识别,我怎么能这样做? 这种长按的目的是改变光的强度或类似的东西(从0到1s,光线增加直到达到最大值,然后降低到最小值等)。
接下来,我会尝试识别一个旋转手势(只用一根手指),所以如果你也有一个答案,那就完美了。
谢谢!
答案 0 :(得分:1)
不要设置延迟。开始在{400}之后开火的timer
。在touchesEnded
中timer
无效,以防在400毫秒之前调用它。当timer
触发时,调用所需的功能。
关于你的第二个问题,你可能需要计算points
方法中touchesMoved
的轨迹。如果某些动作类似于旋转(你需要某种阈值),请调用相应的函数。