UIButton 上的 UILongPressGestureRecognizer

UILongPressGestureRecognizer on UIButton

我在 UIButton 上有一个 UILongPressGestureRecognizer。我的手势识别器的最短持续时间为 0.5 秒。当我按住它时,我希望它每按下 0.5 秒就会触发一次。我该怎么做?

你不能用手势来做。您需要从 UIControl 实施底层触摸管理方法并跟踪触摸的开始和结束(并使用您自己的计时器)。手势触发后,需要结束并通过新的触摸重新开始。

我想应该可以创建你自己的手势,然后你可以访问触摸,但我不确定系统将如何对你重复的状态变化做出反应...

对于每个触摸事件,您将在相应的 view/viewcontroller 上获得以下回调。

touchesBegan:withEvent:, 
touchesMoved:withEvent:, 
touchesEnded:withEvent:, and 
touchesCancelled:withEvent:

实现这个的简单方法是,在 touchesBegan:withEvent 回调方法中触发一个计时器,并在 touchesEnded:withEvent 和 touchesCancelled:withEvent 方法中使计时器无效。

您也可以为此使用一个简单的 UIView,如果您正在寻找一个简单的解决方案,则无需使用新的 UIControl 或 GestureRecognizer。