集合视图滚动'跳'我的textView回到顶部

时间:2017-02-08 20:10:49

标签: ios swift scroll uicollectionview

我有一个带有水平滚动容器视图和UITextView(垂直滚动)的ViewController。

在viewWillLayoutSubViews()中的

我有以下代码将textView的偏移量设置为内容的顶部:

override func viewWillLayoutSubviews() {
    textViewWithScroll.setContentOffset(CGPoint.zero, animated: false)
}

问题是如果我首先向下滚动textView,那么滚动集合视图,textView会向右跳回到顶部。我想阻止这种跳跃。

我找到的下一个最接近的解决方案是在viewDidAppear中设置内容偏移量。这可以防止滚动“跳转” - 但是当视图首次加载时,会从textView的中间跳到顶部。

如何将textView加载到内容的顶部,一旦滚动collectionView,它就不会跳回到顶部?

1 个答案:

答案 0 :(得分:1)

尝试实现一个标志逻辑,强制viewWillLayoutSubviews中的代码只执行一次,因为布局子视图在视图控制器的生命周期中可能会发生一百次。类似的东西:

    private var isTextViewScrolled = false

    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()

        if !isTextViewScrolled {
            textViewWithScroll.setContentOffset(CGPoint.zero, animated: false)
            isTextViewScrolled = true
        }
    }

//注意:如果您遇到任何问题,请尝试将代码移至viewDidLayoutSubviews。