检测手指向上/向下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; }