检测手指向上/向下UITapGestureRecognizer

时间:2011-12-06 01:32:48

标签: ios uigesturerecognizer uitapgesturerecognizer

我如何知道手指何时宕机以及何时使用UITapGestureRecognizerdocumentation说我应该只处理UIGestureRecognizerStateEnded作为点击,这意味着当手指关闭时会UIGestureRecognizerStateBegin,但我得到的只是UIGestureRecognizerStateEnded。 我用来注册识别器的代码是:

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

2 个答案:

答案 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;
}