2016-11-19 3 views
1

У меня есть UIViewController, которые имеют UIScrollView с большим количеством этикеток и ImageViews внутри и я установил высоту UIScrollView с помощью:UIScrollView не прокручивается во второй раз он открыл

override func viewDidLayoutSubviews() { 
    scrollView.contentSize = CGSize(width: self.contentView.frame.width, height: 
      self.labelTitle1.frame.height + 
      self.labelTitle2.frame.height + 
      self.labelTitle3.frame.height + 
      ... 
      self.imageView1.frame.height + 
      self.imageView2.frame.height + 
      self.imageView3.frame.height + 
      ...) 
} 

Это работает в первый раз, когда я открываю что UIViewController, но если я вернусь с помощью UINavigationController, а затем снова открою, что UIViewController с тем же сообщением, я не могу прокрутить вниз.

Если я открою еще одно сообщение внутри этого UIViewController, я могу прокрутить вниз, но только в первый раз, когда он открывается.

То же самое для всех сообщений, они прокручиваются только в первый раз, когда они открыты.

Почему это происходит и как его исправить?

+0

попробуйте позвонить 'viewDidLayoutSubviews()' в 'viewWillAppear()' – Danoram

+0

@Danoram Я пытался, но я до сих пор не в состоянии scroll – user3847113

+0

попробуйте добавить 'super.viewDidLayoutSubviews()' непосредственно перед 'scrollView.contentSize = ...' – Danoram

ответ

1

Переместить свой код viewDidAppear(), так что вы в конечном итоге с чем-то похожим

override func viewDidAppear() { 

    scrollView.contentSize = CGSize(width: self.contentView.frame.width, height: 
     self.labelTitle1.frame.height + 
     self.labelTitle2.frame.height + 
     self.labelTitle3.frame.height + 
     ... 
     self.imageView1.frame.height + 
     self.imageView2.frame.height + 
     self.imageView3.frame.height + 
     ...) 
}