我如何知道手指何时宕机以及何时使用UITapGestureRecognizer
?
documentation说我应该只处理UIGestureRecognizerStateEnded
作为点击,这意味着当手指关闭时会UIGestureRecognizerStateBegin
,但我得到的只是UIGestureRecognizerStateEnded
。
我用来注册识别器的代码是:
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]
答案 0 :(得分:19)
UITapGestureRecognizer
是一个离散的手势识别器,因此永远不会转换到开始或更改的状态。来自UIGestureRecognizer类参考:
离散手势从可能转换为已识别 (UIGestureRecognizerStateRecognized)或失败 (UIGestureRecognizerStateFailed),取决于它们 是否成功解释了手势。如果是手势识别器 转换为已识别,它将其动作消息发送到其目标。
(当然记住UIGestureRecognizerStateRecognized
== UIGestureRecognizerStateEnded
)。
文档说你应该检查一个轻拍手势识别器的状态,看看它是否处于已结束状态,然后再触发代码说它已被识别。他们并不是说轻敲手势实际上会转换为开始或更改状态(尽管我承认文档在使用的语言中有点误导!)。
如果您想检查点击手势识别器的手指向下事件,我建议您只使用touchesBegan:withEvent:
,因为这是您真正想要的事情。
答案 1 :(得分:3)
您可以覆盖委托方法-(BOOL)gestureRecognizer:shouldReceiveTouch:
。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
NSLog(@"Hello from press down");
return YES;
}