Swift UITextview不会滚动到顶部

Swift UITextview不会滚动到顶部,swift,text,scroll,uitextview,display,Swift,Text,Scroll,Uitextview,Display,我正在使用UITextView在ViewDidLoad()中显示长文本: 如果我为storyTextView设置了滚动启用,则textview显示的文本不是从开头开始的。我可以在文本的中间(或底部)看到滚动指示符。< /P> 见截图1。 我试过了 self.storyTextView.scrollsToTop = true 但这没有帮助 如果我取消选中已启用滚动,或者如果文本不太长,无法在UITextView中显示整个文本,则它将按预期从一开始显示。见截图2 有没有办法显示从文本开头开始的

我正在使用UITextView在ViewDidLoad()中显示长文本:

如果我为storyTextView设置了
滚动启用
,则textview显示的文本不是从开头开始的。我可以在文本的中间(或底部)看到滚动指示符。< /P> 见截图1。

我试过了

self.storyTextView.scrollsToTop = true
但这没有帮助

如果我取消选中
已启用滚动
,或者如果文本不太长,无法在UITextView中显示整个文本,则它将按预期从一开始显示。见截图2


有没有办法显示从文本开头开始的长文本(将滚动指示器移到顶部)?我检查了约束和布局,但似乎不相关。我确实找了很多,但到现在为止运气都不好。我可能错过了一些简单的设置,但任何人都可以帮助我。

使用
contentOffset
属性:

textView.contentOffset = CGPointZero
Swift 3的更新:

textView.contentOffset = CGPoint.zero

使用
contentOffset
属性:

textView.contentOffset = CGPointZero
Swift 3的更新:

textView.contentOffset = CGPoint.zero
试试这个:
self.storyTextView.scrollRangeToVisible(NSRange(位置:0,长度:0))
尝试以下操作:
self.storyTextView.scrollRangeToVisible(NSRange(位置:0,长度:0))
在iOS 11和swift 4上工作的唯一解决方法是 在viewDidLoad时设置scroll off,在ViewDidDisplay时设置ON。 它适用于UIScrollView和UiTextView。 测试代码

 override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.isScrollEnabled = false
 }

 override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    scrollView.isScrollEnabled = true
 }

在iOS 11和swift 4上唯一的解决办法是 在viewDidLoad时设置scroll off,在ViewDidDisplay时设置ON。 它适用于UIScrollView和UiTextView。 测试代码

 override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.isScrollEnabled = false
 }

 override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    scrollView.isScrollEnabled = true
 }

在我的案例中,此解决方案为work,Swift 4:

override func viewDidLayoutSubviews() {
    self.txt_about.setContentOffset(CGPoint.zero, animated: false)
}

在我的案例中,此解决方案为work,Swift 4:

override func viewDidLayoutSubviews() {
    self.txt_about.setContentOffset(CGPoint.zero, animated: false)
}

在ViewController中添加以下方法

 override public func viewWillLayoutSubviews() {
   super.viewWillLayoutSubviews()
   textView.contentOffset = CGPoint.zero
 }

在ViewController中添加以下方法

 override public func viewWillLayoutSubviews() {
   super.viewWillLayoutSubviews()
   textView.contentOffset = CGPoint.zero
 }

是什么让你认为他没有在主线上做呢?是什么让你认为他没有在主线上做呢?谢谢。你说得对。我从另一个问题的答案中知道,这需要在viewDidLayoutSubviews()中完成。我加上这个,问题就解决了<代码>重写func viewDidLayoutSubviews(){self.StoryTextView.setContentOffset(CGPointZero,动画:false)}Swift 3:CGPointZero->CGPoint.zero谢谢。你说得对。我从另一个问题的答案中知道,这需要在viewDidLayoutSubviews()中完成。我加上这个,问题就解决了<代码>覆盖func viewDidLayoutSubviews(){self.StoryTextView.setContentOffset(CGPointZero,动画:false)}Swift 3:CGPointZero->CGPoint.zero