双击UITableViewCell

suy*_*ene 8 uitableview

我想点击一下,然后双击一下UITableViewCell.我为它创建了一个customDataSource UITableview.

我怎样才能做到这一点?

Nyx*_*0uf 17

正确的方法是在tableView上添加UITapGestureRecognizer:

UITapGestureRecognizer* doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
doubleTap.numberOfTapsRequired = 2;
doubleTap.numberOfTouchesRequired = 1;
[self.tableView addGestureRecognizer:doubleTap];

UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
[singleTap requireGestureRecognizerToFail:doubleTap];
[self.tableView addGestureRecognizer:singleTap];
Run Code Online (Sandbox Code Playgroud)

然后在您的回调方法中,您可以找到具有以下内容的单元格:

-(void)singleTap:(UITapGestureRecognizer*)tap
{
    if (UIGestureRecognizerStateEnded == tap.state)
    {
        CGPoint p = [tap locationInView:tap.view];
        NSIndexPath* indexPath = [_tableView indexPathForRowAtPoint:p];
        UITableViewCell* cell = [_tableView cellForRowAtIndexPath:indexPath];
        // Do your stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果禁用用户交互,如何滚动? (4认同)
  • 嗨,我试过这个方法,但每当我在一个单元格上加倍tapp时,它总是进入单击方法.它永远不会成为双击功能.我编写了与您提供的完全相同的代码.请帮忙. (2认同)

Ngo*_*yen 7

我已经通过在手势识别器中添加以下内容来实现这一点,尽管我发现单次点击时会有轻微的延迟.

[tapRecognizer setDelaysTouchesBegan:YES];
[tapRecognizer setCancelsTouchesInView:YES];
Run Code Online (Sandbox Code Playgroud)