Ios 如何在自定义TableViewCell内的UIView点击中禁用DidSelectRowatineXpath?

Ios 如何在自定义TableViewCell内的UIView点击中禁用DidSelectRowatineXpath?,ios,objective-c,uitableview,uiview,Ios,Objective C,Uitableview,Uiview,我有一个自定义的UITableView,其中有一个UITableView(myView)。我想在点击myView时禁用didSelectRowAtIndexPath,点击myView时不应调用didSelectRowAtIndexPath 这与其他问题不同,因为在这个问题上,不清楚用户想要实现什么,答案也不一样 您可以覆盖UITableViewCell中的点,请尝试以下操作: // MyCell.m - (BOOL)pointInside:(CGPoint)point withEvent:(UI

我有一个自定义的
UITableView
,其中有一个
UITableView
myView
)。我想在点击
myView
时禁用
didSelectRowAtIndexPath
,点击
myView
时不应调用
didSelectRowAtIndexPath

这与其他问题不同,因为在这个问题上,不清楚用户想要实现什么,答案也不一样


您可以覆盖UITableViewCell中的
点,请尝试以下操作:

// MyCell.m
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    BOOL pointInside = [super pointInside:point withEvent:event];

    if (pointInside && ![self.myView pointInside:[self convertPoint:point toView:self.myView] withEvent:event]) {
        return YES;
    }

    return NO;
}
当您点击myView时,不应调用DIDSELECTROWATINDEXPATH

iOS使用点击测试来查找触控下的视图。点击测试包括检查触摸是否在任何相关视图对象的范围内。如果是,它将递归检查该视图的所有子视图。视图层次结构中包含接触点的最低视图将成为命中测试视图。iOS确定点击测试视图后,会将触摸事件传递给该视图进行处理。

在图像吹扫中:

(图2-1命中测试返回被触摸的子视图)
(来源:)

为了举例说明,假设用户触摸图2-1中的视图E。iOS通过按以下顺序检查子视图来查找命中测试视图:

  • 触摸在视图A的范围内,因此它会检查子视图B 和C
  • 触摸不在视图B的范围内,但在 视图C的边界,因此它检查子视图D和E
  • 触摸不在视图D的范围内,但在 视图E的边界。视图E是视图层次结构中的最低视图 它包含触摸,因此它成为点击测试视图
  • 与大多数应用程序一样,无需禁用didSelectRowAtIndexPath功能的执行。您可以在此处添加一个
    UIButton
    或在myView上添加一个UITapstive并执行所需任务,当您触摸UITapstive区域时,
    didSelectRowAtIndexPath
    将不会执行。 就这样,


    您不能禁用执行
    didSelectRowAtIndexPath
    功能。你可以在这里做什么在你的
    myView
    上添加一个
    uitappostation
    ,然后执行所需的任务。@VijayMasiwal请看Bannings对methanks的回答,解释如下:我按照你说的做了,我在myView中以编程方式创建了一个按钮,并添加了一个操作,但当我点击该按钮时,它只执行我不知道为什么