我有一个文本视图(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。他们无法帮助我,真的(这让我感到惊讶) - 你呢?
我非常感激。谢谢。
我有一个非常类似的问题,特别是在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)
}
您可能需要编写更多信息/代码,因为如果您只使用一个带有UITextView的VC在干净的项目中尝试这段代码,您将看到它实际上正在运行。如果你真的使用某些条件(if something
),这可能就是问题所在。你的真实代码中的something
是什么?
您需要使用viewDidLayoutSubviews()
,以便将scrollview设置为顶部。
override func viewDidLayoutSubviews() {
textView.setContentOffset(.zero, animated: false)
}