12

我如何知道手指何时向下以及何时向上UITapGestureRecognizer文档说我应该只处理水龙头
,所以这意味着当手指向下时,但我得到的只是. 我用来注册识别器的代码是:UIGestureRecognizerStateEndedUIGestureRecognizerStateBeginUIGestureRecognizerStateEnded

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

2 回答 2

19

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

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

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

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

如果您想检查轻击手势识别器的手指按下事件,我建议您只使用touchesBegan:withEvent:,因为无论如何这都是您真正想要的。

于 2011-12-06T01:48:57.677 回答
4

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

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

    return YES;
}
于 2016-01-13T14:24:44.990 回答