【问题标题】:Very hard to capture double tap on UIButton subclass. (time delay to capture double tap)很难在 UIButton 子类上捕获双击。 (捕捉双击的时间延迟)
【发布时间】:2011-05-07 05:19:32
【问题描述】:

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

我认为我有这方面的编码权。但我几乎不可能在我的 iPad 上实际生成双击。是否可以增加单击和双击之间的时间间隔,以便更容易触发。我非常快速地双击并捕获它作为两次单击。只有有时我幸运地触发了双击。我将 UIButton 项的子类放入滚动视图中。

反正我的 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 中测试了同样的东西,结果完全符合预期。

【问题讨论】:

    标签: iphone events click double double-click


    【解决方案1】:

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

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

    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
    }
    

    【讨论】:

    • 你确定吗,因为我在一个我只有一个 UIView 的类中尝试了这个,它捕获了一个“双击”,就像我预期的那样。但无论哪种方式,关于如何捕捉双击的任何想法?
    • 唯一需要注意的是手势识别器仅适用于 iOS 3.2 及更高版本,因此此代码不适用于 3.0 和 3.1 设备。
    • 旧设备对我来说应该不是问题
    • 我刚刚重读了您的第一条评论,我想我可能对您所说的双击是什么感到困惑。 (两个手指与两个快速点击)无论哪种方式,手势识别器都应该处理大小写,将 numberOfTouchesRequired 属性设置为屏幕上同时手指的数量,将 numberOfTapsRequired 属性设置为连续点击的数量。跨度>
    • 这与我的原始代码完全相同。也许问题在于我的 UIButton 在滚动视图中。
    【解决方案2】:

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

    【讨论】:

    • 是的,我知道,但我的日志语句仍然应该显示双击。这真的很难做到。我把它放进去看看我的运气。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 2011-01-06
      • 2013-07-06
      • 1970-01-01
      • 2015-04-14
      相关资源
      最近更新 更多