如果用户在UITableView Cell上进行了一次触摸,我想执行一项操作,如果用户进行了两次触摸,我想执行另一项操作。

我尝试了此问题中提到的多种方法。

How can I detect a double tap on a certain cell in UITableView?

但是,每种方法,我都无法正确地区分一次单击和两次。我的意思是,在每个双击中,它也会发生一次单击。因此,双击也会发生,每次触发动作也会触发。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
FeedCell *myCell = (FeedCell*) [self.tblView cellForRowAtIndexPath:indexPath];

NSLog(@"clicks:%d", myCell.numberOfClicks);

if (myCell.numberOfClicks == 2) {
    NSLog(@"Double clicked");
}
else{

    NSLog(@"Single tap");
}
}


正确的方法应该是什么?

最佳答案

我希望在执行didSelectRowAtIndexPath操作时不要使用double tap。用过的single TapGesture替换为didSelectRowAtIndexPath。无论您在didSelectRowAtIndexPath中编写的代码如何,都将在single tap选择器方法中编写。

示例:如下所示实现单笔和双笔手势。

UITapGestureRecognizer *singleTap = [[[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doSingleTap)] autorelease];
singleTap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:singleTap];

UITapGestureRecognizer *doubleTap = [[[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doDoubleTap)] autorelease];
doubleTap.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:doubleTap];

[singleTap requireGestureRecognizerToFail:doubleTap];

关于ios - 检测双击UITableViewCell的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31153381/

10-15 18:08