У меня есть текстовое представление (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
}
К сожалению, при отображении Text View текст прокручивается не вверх, а где-то посередине.
Я думаю, либо установка contentOffset - это неправильный способ сделать это, либо я делаю это не в то время (может быть, текст изменяется после, устанавливая contentOffset?).
Я многое перепробовал, даже обращался в службу поддержки Apple Code Level. На самом деле они не могли мне помочь (что меня чертовски удивило) – а вы?
Я был бы очень признателен. Спасибо.
А если вызвать setContentOffset?
Вы сделали это в основной теме?





Возможно, вам придется написать больше информации/кода, потому что, если вы попробуете этот фрагмент кода в чистом проекте только с одним VC с UITextView, вы увидите, что он действительно работает. Если вы действительно используете какое-то условие (if something), это может быть проблемой. Что это за something в вашем реальном коде?
У меня была очень похожая проблема, особенно при использовании разделенного просмотра и тестировании на iPhoneX, я решил ее, включив этот фрагмент кода в свой ViewController, когда мне нужно было прокрутить textView вверх:
textView.setContentOffset(.zero, animated: false)
textView.layoutIfNeeded()
Если вы хотите прокрутить до верхней части textView при загрузке ViewController:
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)
}
Я только подумал указать, что им нужна была только еще одна строка кода, чтобы не загромождать ответ. Я попытался уточнить немного больше, так как вы спросили.
Ты гений! Вызов .setContentOffset в viewDidLayoutSubviews() сработал! Большое спасибо.
Вам нужно использовать viewDidLayoutSubviews(), чтобы установить прокрутку вверх.
override func viewDidLayoutSubviews() {
textView.setContentOffset(.zero, animated: false)
}
Эти ответы мне не помогли, к сожалению. :( stackoverflow.com/questions/9450302/…