我在其中创建了一个带有TableView的ViewController,并将其嵌入到NavigationController中。我也设置了约束。在向下滑动时,导航栏会隐藏。一切似乎都很好。
唯一的问题是,在向上滑动时,导航栏无法返回。
如果我使用与TableViewController相同的TableView而不是ViewController(从同一个导航控制器嵌入),导航栏会回来。
对于那些想知道我为什么不去使用TableViewController的人,因为我需要取消选中调整滚动视图插图以解决一些令人不安的 bug。
答案 0 :(得分:1)
要解决此问题,我使用scrollViewWillEndDragging
并检测到Going Down
& Going Up
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if targetContentOffset.memory.y < scrollView.contentOffset.y {
// UP
} else {
// DOWN
}
}
答案 1 :(得分:0)
这是我的解决方案,基于对小森的回答:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let draggDelta = scrollView.contentOffset.y - targetContentOffset.pointee.y
let hiddenContentHeight = spreadsheetView.contentSize.height - spreadsheetView.frame.height - 1
if 0 < draggDelta && targetContentOffset.pointee.y < hiddenContentHeight || (targetContentOffset.pointee.y == 0 && scrollView.contentOffset.y < 0) {
// Shows Navigation Bar
navigationController?.setNavigationBarHidden(false, animated: true)
}
}