ios13 防止下拉滚动到顶部的 tableView 关闭 sheet 模态呈现的样式 viewController
ios13 prevent pulling down on tableView which is scrolled to top from dismissing sheet style modally presented viewController
我有一个 tableViewController,它以默认的 sheet 样式显示模态显示。
我想保留这种模态样式,因为它看起来不错并且在我的应用程序中运行良好。我喜欢在下拉导航栏时解雇。但是我不想要的是下拉 tableView 单元格导致 tableViewController 在 tableView 已经滚动到顶部时被关闭。
有没有办法抑制这种行为,同时保持 sheet 风格的模态呈现?我希望下拉 tableView 以保持垂直弹跳效果,并且只能通过向下拉导航栏部分通过平移来关闭模态呈现的 tableViewController。
当用户开始在 table 视图上拖动时,您可以通过在 table 视图控制器上将 isModalInPresentation
设置为 true
来禁用下拉关闭行为,然后在他们停止拖动时将其重置回 false
,如下所示:
class YourTableViewController: UITableViewController {
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
isModalInPresentation = true
}
override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
isModalInPresentation = false
}
}
请注意,您仍然可以稍微 拉下您的table 视图控制器,但至少您不能完全关闭它。由于拖动停止时该值设置回 false
,因此您可以通过下拉导航栏来关闭。
此外,如果您将 UIRefreshControl
添加到 table 视图,它会在下拉 table 视图时禁用下拉关闭行为。
我有一个 tableViewController,它以默认的 sheet 样式显示模态显示。
我想保留这种模态样式,因为它看起来不错并且在我的应用程序中运行良好。我喜欢在下拉导航栏时解雇。但是我不想要的是下拉 tableView 单元格导致 tableViewController 在 tableView 已经滚动到顶部时被关闭。
有没有办法抑制这种行为,同时保持 sheet 风格的模态呈现?我希望下拉 tableView 以保持垂直弹跳效果,并且只能通过向下拉导航栏部分通过平移来关闭模态呈现的 tableViewController。
当用户开始在 table 视图上拖动时,您可以通过在 table 视图控制器上将 isModalInPresentation
设置为 true
来禁用下拉关闭行为,然后在他们停止拖动时将其重置回 false
,如下所示:
class YourTableViewController: UITableViewController {
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
isModalInPresentation = true
}
override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
isModalInPresentation = false
}
}
请注意,您仍然可以稍微 拉下您的table 视图控制器,但至少您不能完全关闭它。由于拖动停止时该值设置回 false
,因此您可以通过下拉导航栏来关闭。
此外,如果您将 UIRefreshControl
添加到 table 视图,它会在下拉 table 视图时禁用下拉关闭行为。