将 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的主要内容,如果未能解决你的问题,请参考以下文章
将视图添加/删除到表视图的超级视图后,UITableView 停止滚动