视图中有两个scrollView:mainScrollView(red)
和listTable(黄色)。我想设置mainScrollView首先滚动并执行以下操作:
当topView消失并且listTable的顶部到达屏幕顶部时,listTable会自动向上滚动。
如果listTable的顶部位于屏幕顶部,则当用户向下滚动时,mainScrollView会先向下滚动。
func detectScrollView(_ scrollView: UIScrollView){
if scrollView.tag == 1{
if scrollView.contentOffset.y >= 100{
mainScrollView.isScrollEnabled = false
mainScrollView.contentOffset.y = 100
mainScrollView.panGestureRecognizer.isEnabled = false
listTable.isScrollEnabled = true
listTable.panGestureRecognizer.isEnabled = true
}
}else{
//.....
}
}
到现在为止,我只是尝试向上滚动动作的代码,它可以满足我的部分需求。问题是当listTable的顶部到达屏幕顶部时,它无法自动滚动。我必须通过从屏幕上释放手指并开始新的拖动来使其工作。
如何在listTable上继续使用panGesture?
=======更新2017-7-3 =======
我暂时使用以下代码:
var lastContentOffset:CGFloat = 0
func detectScrollView(){
if (self.lastContentOffset > mainScrollView.contentOffset.y) {
// move up
listTable.isScrollEnabled = true
}
else if (self.lastContentOffset < mainScrollView.contentOffset.y) {
// move down
if mainScrollView.contentOffset.y >= 110{
mainScrollView.setContentOffset(CGPoint(x:0, y:110), animated: true)
listTable.isScrollEnabled = true
}else{
listTable.isScrollEnabled = false
}
}
// update the new position acquired
self.lastContentOffset = mainScrollView.contentOffset.y
}
向上移动已解决,仍然向下移动需要修饰屏幕以滚动listTable。