2014-02-18 7 views
0

У меня есть UiViewController, внутри которого у меня есть UIScrollView с шириной и высотой 768X3000. Внутри UIScrollView у меня есть вид с шириной и высотой как 768X1024.UIScrollView не прокручивается в iPAD

Я полностью смущен тем, как реализовать UIScrollView. Мой scrollView не работает. У меня есть много содержимого для отображения в UIView, а UIScroll не прокручивается вниз.

Какие соединения или настройки необходимо выполнить, чтобы работа UIScrollView работала.

+0

myScrollView.contentSize = CGSizeMake (768, 3000); его то, что вам нужно – Pawan

+0

Я тоже это пробовал. Он все еще не работает. Я считаю, что мы должны сделать соединение IBOutlet с UIScrollView слишком правильным? Я тоже это сделал. В моем представленииDidLoad я написал эти 3 строки. [self.scroll setDelegate: self]; [self.scroll setScrollEnabled: YES]; self.scroll.contentSize = CGSizeMake (768.0f, 3000.0f); – user2903572

ответ

2

Вам необходимо установить для свойства contentSize вашего UIScrollView значение 768 x 3000, а не его фрейм или его границы. Таким образом, в viewWillAppear можно добавить код для установки contentSize вашего Scrollview в:

self.scrollView.contentSize = CGSizeMake(768.0f, 3000.0f); 
+0

Я тоже это пробовал. Он все еще не работает. Я считаю, что мы должны сделать соединение IBOutlet с UIScrollView слишком правильным? Я тоже это сделал. В моем представленииDidLoad я написал эти 3 строки. [self.scroll setDelegate: self]; [self.scroll setScrollEnabled: YES]; self.scroll.contentSize = CGSizeMake (768.0f, 3000.0f); – user2903572

+0

@ user2903572 Вам не нужно устанавливать делегат, если вы не планируете отвечать на вызовы метода делегата. Дважды проверьте, что прокрутка включена в Interface Builder, нажав на прокрутку и проверив ее атрибуты с помощью Attributes Inspector. У вас должно быть соединение IBOutlet, если оно настроено в Interface Builder. В противном случае вы не можете установить его contentSize. – Steve

2

1- viewDidLoad это в ближайшее время. Вы должны подождать, пока не будет выполнена макет представлений. Попробуйте установить contentSize в viewDidAppear.

-(void)viewDidAppear:(BOOL)animated{ 

    myScrollView.contentSize = CGSizeMake(768, 3000); 

} 

2- еще один совет вы можете установить contentSize в viewDidLayoutSubviews:

3- установить делегат вашего Scrollview

myScrollView.delegate=self; 

// в случае вам нужны методы делегата

4 Если вы еще не можете прокручивать представление даже после того, как вы правильно настроили contentSize, убедитесь, что вы сняли флажок «Использовать AutoLayou t "в Interface Builder -> File Inspector. Reference

+0

Мой scrollView работает, но я добавляю subViews в parentView. Таким образом, прокрутка работает в первой половине экрана и из того места, где я добавляю subViews из этой части, scrollView не работает. – user2903572

+0

Вы должны проверить размер содержимого прокрутки после добавления к нему дополнительного представления. – Pawan

0

Если вы используете раскадровки в Xcode 5 и разрабатываете для автоматической компоновки, тогда вам нужно несколько ограничений, необходимых для работы (в моем опыте). Во-первых, возложите видом, словно это:

  • Основной вид
    • вид прокрутки
      • вид контента (поместить все материалы, которые вы хотите, чтобы прокрутить в этом вид)

Затем выполните следующие действия в указанном порядке в раскадровке редактора:

  1. Установите высоту зрения содержания 3000. Ширина должна быть 768.
  2. Установите высоту просмотра прокрутки 1024. Ширины должно быть 768.
  3. Установите высоту основного вида на 1024, если в произвольной форме задайте размер или оставьте его с использованием выведенного размера. Ширина должна быть 768.

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

  1. Установить ограничение по высоте только для содержимого. Он должен быть установлен равным 3000.
  2. В верхней части, нижней, правой и левой сторонах представления содержимого просматривается вид прокрутки с использованием 0 для каждого ребра. Вам придется вручную изменить нижнее ограничение с отрицательного числа на 0. Это очень важно, поэтому я повторю его: вручную измените нижнее ограничение на 0.
  3. Вставьте верхнюю, нижнюю, правую и слева от прокрутки до основного вида, используя 0 для каждого ребра.

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

У меня есть много прокрутки в моем приложении для iPad и не нужно использовать код .contentSize один раз, если я построил свои представления таким образом в редакторе раскадровки.

Удачи вам! Я знаю, что такое абсолютная боль и время от времени.

+0

Мой scrollView работает, но я добавляю subViews в parentView. Таким образом, прокрутка работает в первой половине экрана и из того места, где я добавляю subViews из этой части, scrollView не работает. – user2903572

+0

Я _think_, потому что вам нужно установить ограничение высоты для основного поднабора под scrollview (которое будет содержать все ваши другие просмотры). Это тот, который я называю «представлением контента» выше. Обязательно установите ограничение по высоте на 3000. Создайте новый контроллер представления, как я объяснил выше, и посмотрим, работает ли он. Затем вы можете сравнить с тем, что у вас есть, и найти проблему. – Kent

Смежные вопросы