将TextView滚动到顶部

问题描述 投票:0回答:3

我有一个文本视图(UITextView),它显示在运行时设置的长文本,如下所示:

@IBOutlet weak var textView: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()

    if something {
        textView.text = "(very long text here)"
    }

    textView.contentOffset = CGPoint.zero  // doesn't work

}

不幸的是,当显示文本视图时,文本不会滚动到顶部,而是滚动到中间的某个位置。

我在想,要么设置contentOffset是错误的做法,要么是在错误的时间做(也许在设置contentOffset后文本会被更改?)。

我已经尝试了很多,我甚至联系了Apple Code Level Support。他们无法帮助我,真的(这让我感到惊讶) - 你呢?

我非常感激。谢谢。

ios swift uiscrollview uikit uitextview
3个回答
1
投票

我有一个非常类似的问题,特别是在iPhoneX上使用splitview和测试时,我通过在我的ViewController中合并这些代码来解决这个问题,当我需要textView滚动到顶部时:

textView.setContentOffset(.zero, animated: false)
textView.layoutIfNeeded()

如果您希望在加载ViewController时滚动到textView的顶部:

override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        // Can add an if statement HERE to limit when you wish to scroll to top
        textView.setContentOffset(.zero, animated: false)
}

0
投票

您可能需要编写更多信息/代码,因为如果您只使用一个带有UITextView的VC在干净的项目中尝试这段代码,您将看到它实际上正在运行。如果你真的使用某些条件(if something),这可能就是问题所在。你的真实代码中的something是什么?


0
投票

您需要使用viewDidLayoutSubviews(),以便将scrollview设置为顶部。

override func viewDidLayoutSubviews() {
   textView.setContentOffset(.zero, animated: false)
}
© www.soinside.com 2019 - 2024. All rights reserved.