如何让 UITableView 标题视图出现在响应者链中的表格单元格之前?

Posted

技术标签:

【中文标题】如何让 UITableView 标题视图出现在响应者链中的表格单元格之前?【英文标题】:How to get UITableView header view to come before table cells in responder chain? 【发布时间】:2011-12-23 21:44:40 【问题描述】:

我的表格视图上方有一个相当大的表格标题视图。我在该标题视图中有许多子视图。我正在做一些不标准的事情,我将其中一些子视图(但不是全部)“粘贴”在表格视图的顶部。

我的问题是,虽然从视觉上看,表格视图单元格在粘性表格标题子视图下方通过,但就触摸响应而言,表格视图单元格似乎“高于”表格标题视图。 (例如:我有一个按钮,它是表格标题视图的子视图。当按钮下方没有单元格时,按钮效果很好并且响应触摸。但是,当用户滚动表格视图以便有单元格时在按钮下方,触摸按钮实际上会选择一个隐藏的单元格,而不是按下按钮。)任何人都可以就如何“提升”表格视图单元格上方的表格标题视图提供建议,以便其子视图首先接触到处理?

我使用的是表头视图而不是节头视图,因为我只希望一些子视图保持不变(让其他子视图像往常一样向上滚动到屏幕外)。其中一个子视图也可以扩展(并且扩展是动画的) - 到甚至大于屏幕整个高度的高度。由于这些原因,我认为使用节标题视图是不可行的。 (如果是,请告诉我,因为我知道在触摸响应方面,部分标题视图是“高于”表格单元格。)

【问题讨论】:

【参考方案1】:

您可以试试这个,这样可以将所需的标题视图保持在其他视图之上。

[yourView 带来SubviewToFront:yourSubView];

这也可能会有所帮助: http://www.iphonedevsdk.com/forum/iphone-sdk-development/5222-keeping-subview-front.html

这是您正在寻找的方法还是您想要其他方法?

【讨论】:

问题不是视觉问题。 BringSubviewToFront 也会影响响应者链吗?我会尽力回复你。 是的,它应该使它成为主要响应者。 你会在哪个视图上调用方法,你会告诉它把哪个视图带到前面?你会告诉表格视图将标题视图放在前面吗?或者告诉标题视图将(例如)按钮子视图带到前面?到目前为止,我没有运气。 当您怀疑另一个视图被覆盖时,您需要调用它。您可以将标题视图调用到前面(如果我理解正确,它将带上按钮)。另一种选择是,如果用户无论如何都无法选择单元格,只需关闭用户与它们的交互,然后按钮将成为接收操作的按钮。 我在 scrollViewDidScroll 中尝试(蛮力)告诉表格视图将标题视图放在前面。那没有效果。

以上是关于如何让 UITableView 标题视图出现在响应者链中的表格单元格之前?的主要内容,如果未能解决你的问题,请参考以下文章

如何在uitableview的cellForRowAt函数中按标题日期对响应进行排序

如何隐藏 UITableView Header 然后让它重新出现?

按钮对 UITableView 的 headerview 没有响应

实现 UITapGestureRecognizer 后 UITableView 不再响应

使 UITextField 子视图成为 UITableView 中的第一响应者时出错

如何让 UITableView 继承 UIViewController 的自定义子类?