如何检测iOS中连续两次点击

时间:2014-01-06 19:01:55

标签: ios uitableview core-data uigesturerecognizer

在我的应用程序中,我希望用户在一行中点击两次以显示警报视图,以显示所选行的详细信息。目前我已经实施了另外两种手势,从左向右滑动并长按1秒。 这是代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *CellIdentifier = @"Cell";

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell == nil)
  {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                   reuseIdentifier:@"Cell"] autorelease];
  }

    //long press gesture
    UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
                                          initWithTarget:self action:@selector(handleLongPress:)];
    lpgr.minimumPressDuration = 1.00;
    [cell addGestureRecognizer:lpgr];
    //end of long press gesture11111
    //swipe left-right
    UISwipeGestureRecognizer *swipeLeftRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGestureLeftRight:)];
    [swipeLeftRight setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft )];
    [cell addGestureRecognizer:swipeLeftRight];
    //end of swipe left-right


  [self configureCell:cell atIndexPath:indexPath];

  return cell;
}

我还没有找到任何可以应用于我的代码的内容,因此任何提案都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您可以通过三种不同的方式执行此操作(根据所需的效果和编码风格而有所不同)。

第一种方法是添加一个doubletap手势识别器(如果你在任何时间内寻找双击而不是两次点击)。我认为你可以自己编码。

第二种方法是检测细胞选择:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Check if the cell at indexPath is currently the tableview's selected cell then you have double tap
}

第三个与第二个相同,除了您创建一个indexPath变量并在didselectrow方法中设置它。然后,如果下一个didselectrow调用是完全相同的indexPath,那么您可以双击。

我的投票将是保存的变量。我不确定tableview和cell的“selected”属性是多么可靠。但是你必须实现didDeselectRow函数,因为在tableview选择之外的情况下可以调用它。