UIScrollView有时不会向上滚动

时间:2016-12-30 09:00:22

标签: ios swift uiscrollview swift3 contentoffset

我正在使用2个滚动视图当内部滚动视图向上滚动时,外部scrollView也向上移动(正内容偏移.y),当内部SV的contentoffset.y小于y时,两个滚动视图都回到原始位置

这是代码: // secondView是一个位于outerScrollView内部的UIView,位于内部SV(scrollView)之上。

var scollView: UIScrollView!
var yOffset: CGFloat!
override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    self.automaticallyAdjustsScrollViewInsets = true
    self.outerScrollView.delegate = self

    self.scrollView = UIScrollView(frame: CGRect(x: 0, y: self.secondView.frame.origin.y + self.secondView.frame.height, width: self.view.frame.width, height: self.view.frame.height - (264)))
    self.scrollView.delegate = self
    self.outerView.addSubview(self.scrollView)
    self.scrollView.setContentOffset(CGPoint.zero, animated: true)
}

func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
    if (scrollView == self.scrollView) {
        if (scrollView.contentOffset.y > 0) {
            if (self.outerScrollView.contentOffset.y <= 0 ) {
                let contentnOffset:CGPoint = CGPoint(x: 0.0, y: self.yOffset)
                DispatchQueue.main.async {
                    self.outerScrollView.setContentOffset(contentnOffset, animated: true)
                    self.scrollView.frame.size = CGSize(width: self.view.frame.width, height: self.view.frame.height - self.qLabel.frame.height - 9)

                    if (scrollView.contentSize.height < self.view.frame.height - self.qLabel.frame.height - 9) {
                        let downPanGesture: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(self.handlePan))
                        downPanGesture.direction = .down
                        self.scrollView.addGestureRecognizer(downPanGesture)
                    }
                }
            }
        } else {
            DispatchQueue.main.async {
                self.outerScrollView.setContentOffset(CGPoint.zero, animated: true)
                self.scrollView.frame.size = CGSize(width: self.view.frame.width, height: self.view.frame.height - (self.scrollView.frame.origin.y))
            }
        }
    }
}

虽然一切正常,但只有一个小问题。内部scrollView向上滚动并且contentoffset已更改并且我想继续滚动此视图后,它有时只是不滚动(向上)。所以,我必须首先将它向下滚动,然后它将再次开始滚动。它只是很少发生,但它很烦人。

有人可以告诉我可能出现的问题吗? 谢谢!

P.S。我已经尝试了所有其他scrollView的委托方法,如didenddecelerating()或didenddragging()等。

0 个答案:

没有答案