当 UITableView 仍在滚动时,如何在 tableHeaderView 上启用触摸事件?

Posted

技术标签:

【中文标题】当 UITableView 仍在滚动时,如何在 tableHeaderView 上启用触摸事件?【英文标题】:How to enable touch events on tableHeaderView while the UITableView is still scrolling? 【发布时间】:2016-01-29 02:37:43 【问题描述】:

我在情节提要中创建了一个 UITableViewController,并添加了一个 UIView 作为 tableHeaderView。我在 tableHeaderView 中有一个 MKMapView,但我的问题是 tableHeaderView 中的地图在 tableView 完全停止滚动之前没有收到触摸。相反,如果在滚动结束减速之前发生触摸,则滚动会继续,这是不受欢迎的行为。

我已经尝试将 UITableView 子类化以覆盖 hitTest,但无法弄清楚要返回什么,因为 tableHeaderView 中的事件输出如下:

<MKNewAnnotationContainerView: 0x1589ac3a0; frame = (0 0; 375 310.5); autoresize = W+H; autoresizesSubviews = NO; layer = <CALayer: 0x170c3c5e0>>

那么,有没有办法在scrollView减速的时候同时和tableHeaderView交互呢?

【问题讨论】:

【参考方案1】:

似乎 TableHeaderViews 并不是真正为这样的事情而设计的。您只需在 UITableView 顶部添加 MKMapView,这将解决您的问题。

【讨论】:

虽然这可以解决问题,但 tableHeaderView 是我的最佳选择。 tableView 需要在整个屏幕上可滚动,在 tableView 顶部添加另一个视图不是最佳选择。

以上是关于当 UITableView 仍在滚动时,如何在 tableHeaderView 上启用触摸事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在用户仍在滚动时获取 scrollTop 属性

当文本字段开始编辑时停止 UITableView 滚动

滚动时如何使 UITableView 从下到上显示?

当 tableView 仍在滚动时 popToRootViewController 崩溃

如何使 UITableView 内容围绕中心点滚动

UITableView 滚动 UINavigationBar