Ios 如何停止视图控制器以接触tableView单元格';s子视图?

Ios 如何停止视图控制器以接触tableView单元格';s子视图?,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我的ViewController中有一个TableView。 在选定状态下,其单元格的子视图的宽度增加,超出其边界 当我点击此子视图时,触摸将进入视图控制器的touchesBegind实现,该实现用于取消选择单元格 现在这个子视图没有被剪裁,也没有被允许离开,所以理想情况下,落在它上面的触摸应该进入它,但是为什么它们要进入拥有tableview的ViewController呢 TableView位于iPad屏幕(视图控制器)的左侧,作为 侧边栏 所选单元格显示为抽屉,如下所示 点击屏幕上其他任

我的ViewController中有一个TableView。 在选定状态下,其单元格的子视图的宽度增加,超出其边界

当我点击此子视图时,触摸将进入视图控制器的touchesBegind实现,该实现用于取消选择单元格

现在这个子视图没有被剪裁,也没有被允许离开,所以理想情况下,落在它上面的触摸应该进入它,但是为什么它们要进入拥有tableview的ViewController呢

  • TableView位于iPad屏幕(视图控制器)的左侧,作为 侧边栏
  • 所选单元格显示为抽屉,如下所示
  • 点击屏幕上其他任何位置时,抽屉(选定单元格) 回去
问题是选定单元格中的区域超出了tableview的边界, 如果单击,则在ViewController中提供touchesBegined方法

因此,它最终会返回

=================================================
======                                           =
======                                           =
======                                           =
=============                                    =
=============                                    =
======                                           =
======                                           =
======                                           =
======                                           =
======                                           =
======                                           =
======                                           =
======                                           =
==================================================

我认为不要使用视图控制器,而是尝试创建自定义视图,一个用于表视图,另一个是您的视图,它将像抽屉一样显示。为tableview创建自定义委托。应用动画功能,如推送和弹出视图控制器。我认为这可以帮助你非常好。将tableviewcell选择样式属性设置为“无”

是的,这将发生,因为更新的单元格现在超过了tableview的宽度,所以现在显然将转到tableview的SuperView。如果您想禁止触摸,那么您需要增加tableview的宽度,这样单元格视图将位于table下,然后您将在tableview上接收触摸

实际上,UIView有一个属性称为“clipsToBounds”,默认情况下,它的值为“No”,因此这不会剪裁UIView之外的区域,这就是为什么您看到单元格视图,但没有得到接触,这将适用于所有类型的视图


希望这能帮助你:)

我做到了。但现在,tableView正在发挥作用,即使它本不应该这样做。我希望将此触摸传递给ViewController。如果您不希望触摸UItableview,而只希望触摸增加的单元格视图和其他视图,则需要创建自己的自定义视图,并在UIScrolView上进行管理。这是唯一剩下的解决方案,所以我增加了tableView的宽度。然后子类化tableview以覆盖hitTest。现在,我检查是否有任何单元格子视图想要进行触摸。如果他们都不想触摸,那么我返回nil,让tableview的下一个响应者来处理它,结果是ViewController。问题解决了!太好了:),谢谢你的解释。