当按钮覆盖在表格视图顶部时,如何防止表格视图单元格注册点击?

Posted

技术标签:

【中文标题】当按钮覆盖在表格视图顶部时,如何防止表格视图单元格注册点击?【英文标题】:How to prevent tableview cell registering a tap when a button is overlaid on top of a tableview? 【发布时间】:2019-04-14 12:05:54 【问题描述】:

我的应用有一个标签栏,我在标签栏的中心添加了一个大按钮。为此,我只需创建一个按钮并将其作为子视图添加到标签栏。

按钮的顶部越过标签栏的顶部边缘,位于 tableview 的顶部。这是屏幕截图。

当我点击按钮的底部(绿色箭头)时,它可以正常工作,但是如果我点击按钮的顶部(红色箭头) - 覆盖 tableview 的位 - 按钮的动作不是触发,而不是按钮下方的单元格正在注册点击。

如何防止这种情况发生?

【问题讨论】:

【参考方案1】:

如果视图框架伸出其父视图框架,您将不会收到任何超出父视图框架的触摸事件。这就是这里发生的事情,因为大按钮可能是 TabBar 的子视图。将此添加按钮解析为 TabBarControllers 视图的子视图而不是 TabBar 并设置适当的约束。

另一种解决方案是为这个大按钮创建一个专用的UIButton 子类并覆盖hitTest(point:event:) 方法。

供参考: Capturing touches on a subview outside the frame of its superview using hitTest:withEvent:

【讨论】:

谢谢!将按钮添加到 TabBarController 视图在我的上下文中不起作用,但我将标签栏子类化并添加了 hitTest 并解决了它。 很高兴听到这个消息!

以上是关于当按钮覆盖在表格视图顶部时,如何防止表格视图单元格注册点击?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的表格视图倒置,以便新添加的单元格出现在顶部而不是按钮?

如何使表格视图内的单元格开始向下?

单击单元格按钮时如何显示视图

如何防止表格视图滚动到视图后面?

如何在滚动表格视图期间始终将表格视图的第一个单元格保持在其表格视图的顶部

使 UIButton 保持在表格视图 rss 提要单元格的顶部 [重复]