将 superView 拖到某个阈值后启用滚动 UITableView

Posted

技术标签:

【中文标题】将 superView 拖到某个阈值后启用滚动 UITableView【英文标题】:Enable to scroll UITableView after dragging superView to certain threshold 【发布时间】:2018-06-21 05:01:36 【问题描述】:

就像 Apple 地图一样,主要信息表视图是位于 MKMapView 顶部的滑动视图。它包含一个 UITableView 作为子视图,具有全开、半开和关闭三种状态。

当处于半开状态时,如果用户开始向上拖动工作表,则整个工作表一直拖动直到完全打开状态,如果用户进一步向上拖动工作表,UITableView 内容开始滚动,请注意用户还没有抬起手指所以没有 touches end 事件,它是与 sheet 的持续交互。

我的设置:

包含 UITableView 的工作表有一个 UIPanGestureRecognizer 设置来上下拖动工作表。

最初,当工作表半开时,我尝试通过设置 isUserInteractionEnabled = false 来禁用 UITableView 上的用户交互。所以现在我可以向上平移工作表,当达到完全打开状态时,我停止平移工作表并为 UITableView 设置 isUserInteractionEnabled = true。但我的问题是 UITableView 在用户抬起手指并再次与之交互时响应下一个触摸事件。当用户没有抬起手指时如何进行滚动?

我什至尝试更改 UITableView 的 scrollEnabled 属性而不是 isUserInteractionEnabled 属性,但结果相同。

我找到了这个similar question,但没有答案。

这是 Apple 地图中的默认功能。 有什么建议如何实现这个功能?

【问题讨论】:

【参考方案1】:

尝试在 Github 中探索 ISHPullUp 这个开源库。它具有与苹果地图应用程序相同的功能。

【讨论】:

这个库没有这个功能。我已经让工作表工作了,但我希望 UITableView 的内容在工作表达到完全打开状态时无需用户抬起手指即可滚动。 你试过tableView.panGestureRecognizer.enabled = false, tableView.panGestureRecognizer.enabled = true

以上是关于将 superView 拖到某个阈值后启用滚动 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

展开 UITextView 然后在某个点后滚动

达到阈值后将累积值设置为常数

将视图添加/删除到表视图的超级视图后,UITableView 停止滚动

如果涉及superview,则不会排除子视图点击的UIScrollView

如何在某个阈值后拆分折线图下区域的颜色(超出 x 轴)

SwiftUI:如何将 TextField 高度动态更改为阈值,然后允许滚动?