在UIButton子类上很难捕获双击。 (延迟捕捉双击)

时间:2010-09-09 19:47:04

标签: iphone events click double double-click

我说的是用同一根手指在屏幕上进行两次单独的触摸

我认为我有正确的编码。但是我几乎不可能在我的iPad上实现双击。是否可以增加单击和双击之间的时间间隔,因此更容易触发。我非常快地进行双击,它只需单击两次即可捕获它。有时候我很幸运能够触发双击。我将UIButton项的子类放入scrollview中。

无论如何,我的UIButton的子类实现了:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{

 UITouch *touch = [[event allTouches] anyObject];

 NSLog(@"Touch count:%d",touch.tapCount);

 if (touch.tapCount == 1) 
 {
  //Do things for one touch
 }
 else if (touch.tapCount == 2) 
 {
  //Do things for double touch
 }
}

这是捕获事件。这就是为什么我认为我的代码是正确的,我只是找不到任何与UIEvent有关的东西以及决定发生多少触摸的因素。我在不同的UIView中测试了同样的东西,它的工作方式完全符合预期。

3 个答案:

答案 0 :(得分:3)

您的代码同时在视图中检测到两根手指,而不是手指上的快速序列(双击)。

如果您想检测双击,最简单的方法是使用手势识别器。无论在何处设置子类,都要添加以下代码:

UITapGestureRecognizer *singleFingerDoubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleFingerDoubleTap:)];
singleFingerDoubleTap.numberOfTouchesRequired = 1;
singleFingerDoubleTap.numberOfTapsRequired = 2;
[self addGestureRecognizer:singleFingerDTap];
[singleFingerDTap release];

并实施一种方法来进行双击:

-(void)handleSingleFingerDoubleTap:(id)sender {
  //Do stuff
}

答案 1 :(得分:0)

你没有打电话给[super touchesBegan:touches withEvent:event]

答案 2 :(得分:0)

这篇文章粗略勾勒出我认为正确的答案:double tap in UIButton