在没有 UILongPressGestureRecognizer 的情况下识别 swift 中的长按
Recognize long press in swift without UILongPressGestureRecognizer
我正在围绕手势识别构建一个应用程序。
我已经构建了我的代码,可以识别敲击、滑动(即使是多个手指)、捏合。
现在我想在不使用 UILongPressGestureRecognizer 的情况下识别长按手势,因为它在(我尝试过)之后与我对其他手势的识别相冲突。
我现在做的是在touchesBegan中获取时间,在touchesMoved中计算时间差,如果大于400ms(例如),我调用一个函数。
问题是这个函数只在手指稍微移动时调用,而不是在它完全静止时调用。
另一种选择是在 touchesBegan 中设置一种延迟,并在 400 毫秒后检查手指是否仍在屏幕上,然后调用该函数。
我怎样才能在不阻止其余手势识别的情况下做到这一点?
这个长按的目的是改变光的强度或类似的东西(从 0 到 1 秒,光增加直到达到最大值,然后降低直到最小等)。
接下来,我将尝试识别旋转手势(仅用一根手指),如果您对此也有答案,那就完美了。
谢谢!
不设置延迟。启动将在 400 毫秒后触发的 timer
。在 touchesEnded
中使 timer
无效,以防它在 400 毫秒之前被调用。当 timer
触发时,调用所需的函数。
关于你的第二个问题,你可能需要在touchesMoved
方法中计算points
的轨迹。如果移动以某种方式类似于旋转(您将需要某种阈值),请调用适当的函数。
我正在围绕手势识别构建一个应用程序。 我已经构建了我的代码,可以识别敲击、滑动(即使是多个手指)、捏合。
现在我想在不使用 UILongPressGestureRecognizer 的情况下识别长按手势,因为它在(我尝试过)之后与我对其他手势的识别相冲突。
我现在做的是在touchesBegan中获取时间,在touchesMoved中计算时间差,如果大于400ms(例如),我调用一个函数。 问题是这个函数只在手指稍微移动时调用,而不是在它完全静止时调用。
另一种选择是在 touchesBegan 中设置一种延迟,并在 400 毫秒后检查手指是否仍在屏幕上,然后调用该函数。
我怎样才能在不阻止其余手势识别的情况下做到这一点? 这个长按的目的是改变光的强度或类似的东西(从 0 到 1 秒,光增加直到达到最大值,然后降低直到最小等)。
接下来,我将尝试识别旋转手势(仅用一根手指),如果您对此也有答案,那就完美了。
谢谢!
不设置延迟。启动将在 400 毫秒后触发的 timer
。在 touchesEnded
中使 timer
无效,以防它在 400 毫秒之前被调用。当 timer
触发时,调用所需的函数。
关于你的第二个问题,你可能需要在touchesMoved
方法中计算points
的轨迹。如果移动以某种方式类似于旋转(您将需要某种阈值),请调用适当的函数。