【问题标题】:UITableView didSelectRowAtIndexPath and UITapGestureRecognizer conflictsUITableView didSelectRowAtIndexPath 和 UITapGestureRecognizer 冲突
【发布时间】:2012-02-18 05:35:35
【问题描述】:

所以我有一个视图,其中有一些视图,该视图在图像上有一个 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 语句

【问题讨论】:

    标签: iphone objective-c ipad uitableview uitapgesturerecognizer


    【解决方案1】:

    设置

    yourView.userInteractionEnabled = NO;
    

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

    【讨论】:

    • 这不是我想要的,我想要执行 didSelectRowAtIndexPath,而不是 tapGestureRecognizer 的动作
    • 不要在单元格上设置,在要添加到单元格的子视图上设置。
    • 我做到了.. 所以基本上我有一个 UITableView 单元格的子类,我在将它添加到子视图后设置了 userInteractionEnabled = NO
    • “我有一个视图,其中有一些视图在图像上有一个 UITapGestureRecognizer”也许你应该编辑它以准确描述你的代码。因此,您已将 UITableViewCell 子类化,并在其中包含带有手势识别器的图像。为什么不在设置行时删除手势记录?您还可以枚举单元格的所有子视图并将 userInteractionEnabled 设置为 NO。
    【解决方案2】:

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

    [myImage addGestureRecognizer:tapGestureRecognizer];
    

    【讨论】:

      【解决方案3】:

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

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

      - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
      {
          return ![NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-01
        • 2011-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-27
        • 2017-01-26
        相关资源
        最近更新 更多