当另一个scrollView转到某个contentOffset时自动滚动一个tableview

时间:2017-07-03 04:03:30

标签: ios swift uitableview uiscrollview

视图中有两个scrollView:mainScrollView(red)和listTable(黄色)。我想设置mainScrollView首先滚动并执行以下操作:

  1. 当topView消失并且listTable的顶部到达屏幕顶部时,listTable会自动向上滚动。

  2. 如果listTable的顶部位于屏幕顶部,则当用户向下滚动时,mainScrollView会先向下滚动。

  3. 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?

    enter image description here

    =======更新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。

0 个答案:

没有答案