Ios 将TextView滚动到顶部

Ios 将TextView滚动到顶部,ios,swift,uiscrollview,uikit,uitextview,Ios,Swift,Uiscrollview,Uikit,Uitextview,我有一个文本视图(UITextView),它显示在运行时设置的长文本,如下所示: @IBOutlet weak var textView: UITextView! override func viewDidLoad() { super.viewDidLoad() if something { textView.text = "(very long text here)" } textView.contentOffset = CGPoint.z

我有一个文本视图(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之后发生了更改)

我已经尝试了很多,我甚至联系了苹果的代码级支持。他们帮不了我,真的(这让我大吃一惊)-你能吗


我非常感谢。谢谢。

您可能需要编写更多的信息/代码,因为如果您在clean project中仅使用一个VC和UITextView来尝试这段代码,您将看到它实际上正在工作。如果您真的在使用某个条件(
如果某个条件
),这可能就是问题所在。在你的真实代码中这是什么?

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

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)
}

您需要使用
viewdilayoutsubviews()
,以便将滚动视图设置为顶部

override func viewDidLayoutSubviews() {
   textView.setContentOffset(.zero, animated: false)
}

不幸的是,这些答案对我没有帮助(如果你调用
setContentOffset
?你是在主线中调用的吗?我只想指出他们只需要一行代码,不想把答案弄得乱七八糟。自从你问起,我试着详细说明了一点。你真是个天才!在viewDidLayoutSubviews()中调用.setContentOffset成功了!非常感谢。