我有一个文本视图(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支持。他们真的帮不了我(这让我很惊讶)–可以吗?
我非常感谢。谢谢。
答案 0 :(得分:1)
我有一个非常相似的问题,尤其是当在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)
}
答案 1 :(得分:0)
您可能需要编写更多的信息/代码,因为如果您在仅使用一个带有UITextView的VC的干净项目中尝试这段代码,就会看到它确实在工作。如果您确实使用某种条件(if something
),则可能是问题所在。您的真实代码中的something
是什么?
答案 2 :(得分:0)
您需要使用viewDidLayoutSubviews()
,以便将滚动视图设置为顶部。
override func viewDidLayoutSubviews() {
textView.setContentOffset(.zero, animated: false)
}