【问题标题】:detecting finger up/down UITapGestureRecognizer检测手指向上/向下 UITapGestureRecognizer
【发布时间】:2012-01-13 17:18:33
【问题描述】:
我如何知道UITapGestureRecognizer 手指何时向下以及何时向上?
documentation 说我应该只处理UIGestureRecognizerStateEnded 作为点击,所以这意味着当手指向下时有UIGestureRecognizerStateBegin,但我得到的只是UIGestureRecognizerStateEnded。
我用来注册识别器的代码是:
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]
【问题讨论】:
标签:
ios
uigesturerecognizer
uitapgesturerecognizer
【解决方案1】:
UITapGestureRecognizer 是一个离散的手势识别器,因此永远不会转换到开始或更改状态。来自 UIGestureRecognizer 类参考:
离散手势从“可能”转换为“已识别”
(UIGestureRecognizerStateRecognized) 或失败
(UIGestureRecognizerStateFailed),取决于他们是否
成功地解释手势与否。如果手势识别器
转换为已识别,它将其操作消息发送到其目标。
(当然记得UIGestureRecognizerStateRecognized == UIGestureRecognizerStateEnded)。
文档说您应该检查轻击手势识别器的状态以查看它是否处于结束状态,然后再触发代码以说明它已被识别。他们并不是说点击手势实际上会转换为开始或更改状态(尽管我承认文档在使用的语言上有点误导!)。
如果您想检查点击手势识别器的手指按下事件,我建议您只使用touchesBegan:withEvent:,因为无论如何这才是您真正追求的。
【解决方案2】:
您可以覆盖委托方法-(BOOL)gestureRecognizer:shouldReceiveTouch:。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
NSLog(@"Hello from press down");
return YES;
}