检测手指向上/向下UITapGestureRecognizer

我怎么知道手指何时宕机以及何时使用UITapGestureRecognizer
文档说我只应该将UIGestureRecognizerStateEnded作为tap来处理,这意味着当手指关闭时会有UIGestureRecognizerStateBegin ,但我得到的只是UIGestureRecognizerStateEnded
我用来注册识别器的代码是:

 [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)] 

UITapGestureRecognizer是一个离散的手势识别器,因此永远不会转换到开始或更改的状态。 从UIGestureRecognizer类参考:

离散手势从可能转换为已识别(UIGestureRecognizerStateRecognized)或失败(UIGestureRecognizerStateFailed),具体取决于它们是否成功解释了手势。 如果手势识别器转换为已识别,则会将其操作消息发送到其目标。

(记住当然是UIGestureRecognizerStateRecognized == UIGestureRecognizerStateEnded )。

文档说你应该检查一个轻敲手势识别器的状态,看它是否处于已结束状态,然后你发出代码说它已被识别。 他们并不是说轻敲手势实际上会转换为开始或更改的状态(尽管我承认文档在使用的语言中有点误导!)。

如果你想检查轻击手势识别器的手指向下事件,我建议只使用touchesBegan:withEvent: ,因为这是你真正想要的事情。

您可以覆盖委托方法-(BOOL)gestureRecognizer:shouldReceiveTouch: .

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { NSLog(@"Hello from press down"); return YES; }