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