0

所以我有一个视图,其中有一些视图,该视图在图像上有一个 UITapGestureRecognizer 并且我有一个表格视图。问题是,当我点击一个表格视图单元格并且其后面有一个点击手势识别器的视图时,该 UITapGestureRecognizer 的操作也会被执行。问题是如何禁用此功能,以便在执行表视图 didSelectRowAtIndexPath 时不执行点击手势识别器操作?顺便说一句,我已经设置:

 tapGestureRecognizer.cancelsTouchesInView = NO;

我也试过这样做:

- (IBAction) handleTapGesture:(UITapGestureRecognizer *) sender {

    if ([sender.view isKindOfClass:[TileViewController class]]){
        NSLog(@"CANCEL THIS");
    }

   if ([sender.view isKindOfClass:[UITableView class]]){
        NSLog(@"CANCEL THIS");
    }
}

但它从未进入 if 语句

4

3 回答 3

2

确保将点击手势识别器添加到图像,而不是整个视图或表格视图。

[myImage addGestureRecognizer:tapGestureRecognizer];
于 2012-01-24T23:54:16.920 回答
2

您还可以通过实现gestureRecognizer:shouldReceiveTouch:和使用视图的类来确定要采取的操作来管理它。这种方法的优点是不会屏蔽直接围绕表格的区域中的点击(这些区域的视图仍然来自 UITableView 实例,但它们不代表单元格)。

警告:假设Apple不会更改类名。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return ![NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"];
}
于 2012-08-13T16:55:54.517 回答
0

yourView.userInteractionEnabled = NO;

在您放置在表格单元格中的视图上。这应该取消对所有子视图的触摸。您可能可以在 cellForRowAtIndexPath 函数中轻松设置它。

于 2012-01-24T23:41:36.940 回答