UIScrollView не прокрутка?

У меня есть UIScrollView, созданный в построителе интерфейсов с добавленной связью объектов UITextView и UIImageView. Я подключил его к IBOutlet, а под -(void)viewDidLoad я установил его размер содержимого 1200x2000. Пользовательское взаимодействие Enabled, Multitouch, Scrolling Enabled и показывает, что индикаторы вертикальной и горизонтальной прокрутки установлены на YES. Когда я запускаю приложение в iOS-симуляторе, он не прокручивается. Что может быть причиной такого поведения?

Ответ 1

Ответ 2

Лучший способ узнать, как преодолеть эту проблему, не прибегая к написанию кода, - это то, что все это можно сделать в раскадровке, и вот как:

  • Оставьте автозапуск включен.
  • Сделать общий UIView подвью UIScrollView. 2.1) Поместите все компоненты View в этот общий UIView.
  • Сделать ограничение автоопределения между подвью и UIScrollView. Вы должны навести правую и/или нижнюю часть последнего подсмотра справа и/или нижней части UIScrollView. Вот как UIScrollView знает размер содержимого.

Ответ 3

viewDidLoad действительно слишком скоро, но viewDidAppear:animated тоже может быть не слишком запоздалым. Идеальное место для установки contentOffset находится внутри viewDidLayoutSubviews.

Ответ 4

Если вы используете Autolayout, убедитесь, что вы установили код для установки размера содержимого внутри

viewDidLayoutSubviews

Ответ 5

Я использую пользовательский вид в UIScrollView, для функции обновления, а прокрутка не прокручивается. Я пытаюсь установить contentSize с помощью AutoLayout и попытаться установить его также с помощью кодов. Прокрутка по-прежнему не может прокручиваться.

Проведя 3 ~ 4 часа, я разрешаю его contentInset. Он покажет прокрутку, чтобы добавить дополнительное пространство для прокрутки.

override func viewDidLayoutSubviews() {
    // Add extra 15pt on the `top` of scrollView.
    //self.scrollView.contentInset = UIEdgeInsetsMake(15, 0, 0, 0)

    // Add extra 2pt on the `bottom` of scrollView, let it be scrollable. And the UI is more beautiful in my case. 
    self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 2, 0)
}

Справочные документы: