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