Подтвердить что ты не робот

UIScrollView не будет прокручиваться!

В IB у меня есть UIView. Затем у меня есть суб-UIView с UIScrollView в качестве дополнительного представления. Затем UIScrollView имеет суб-UIImageView. UIScrollView и UIImageView имеют одинаковый размер. Они намного больше, чем UIView, из которых они являются подчиненными. Я предположил, что это сделает прокрутку. Это не так. Требуется ли какой-либо код для просмотра прокрутки?

4b9b3361

Ответ 1

Вам нужно установить UIScrollView.contentSize в соответствие с общим размером прокрутки, который в данном случае является вашим размером фрейма подкадра.

Ответ 2

Как указано в принятом ответе, вы должны установить свойство UIScrollView contentSize.

Это можно сделать в Interface Builder.

  • Выберите вид прокрутки
  • Выберите "Проверка личности" в области "Утилиты" справа.
  • В разделе "Пользовательские атрибуты времени выполнения" нажмите кнопку "+"
  • Задайте значение "Key Path" для "contentSize"
  • Задайте для параметра "Тип" значение "Размер"
  • Установите значение "Значение" в значение "{ширина, высота]" (например: "{320, 600}" )

Создайте и запустите и прокрутите прокрутку.

Вставка содержимого не влияет на прокрутку. См. Что такое свойство UIScrollView contentInset для?

Ответ 3

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

Ответ 4

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

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

Смешно от моего имени я знаю, но на всякий случай это помогает кому-то.

Ответ 5

Я разместил все содержимое своего scrollview в IB. (кнопки, метки, текстовые поля и т.д.). Полный размер - 500. Затем я изменил его до 436 в IB.

Тогда в коде я ставлю это viewDidLoad:

optionsScrollView.contentSize = CGSizeMake(320,500);

Итак, это оставляет 64 пикселя, которые я могу прокручивать. Он работает отлично.

Я также разместил "UIScrollViewDelegate" в < > скобках @interface для моего .h файла и связал выход делегата прокрутки с файловым владельцем в IB.

Ответ 6

больше, вы включили прокрутку? посмотрите на свойство

@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled

Ответ 7

Другая важная вещь, о которой я не упоминал здесь, - это то, что UIScrollView не очень хорошо работает с AutoLayout. Если кажется, что вы все сделали правильно, проверьте, включен ли ваш ViewController автозапуск, и если да, отключите его.

(Каждый раз, когда вы прокручиваете, взгляды переустанавливаются. Gak!)

Итак:

  • Убедитесь, что scrollview contentSize больше, чем его frame.size
  • Убедитесь, что AutoLayout для ViewController выключен.

Ответ 8

Просмотр прокрутки работает следующим образом:
Рамка
затем
contentSize
виды или объекты и т.д.


Если ваш кадр установлен на ваш размер контента, он не будет прокручиваться. Поэтому установите рамку (на правой панели IB → вторая последняя вкладка "Инспектор размера" ) на длину вашего приложения (в моем случае это 367, так как у меня есть панель навигации и панель вкладок), а затем программно установите contentSize в - yup вы догадались... больше, чем ваш кадр, чтобы он мог прокручиваться.

Счастливые дни!

Ответ 9

Я хотел бы добавить причину, по которой мой scrollview не прокручивался сегодня. Я добавил все мои подпрограммы в коде. Я правильно установил contentSize. Пользовательское взаимодействие было включено.

Моя проблема была в Interface Builder. Я разместил UIButton как подпункт моего UIScrollView. Эта кнопка вызывала прокрутку не прокрутки. Как только я удалил кнопку из Interface Builder и обработал ее в коде, мой scrollview начал прокручиваться.

Итак, вы идете. Есть еще одна вещь, которую нужно проверить, пытаясь понять, почему это не прокрутка. Проверьте построитель интерфейса для подзапросов.

Ответ 10

Я мог бы решить проблему прокрутки с помощью следующего ответа:

fooobar.com/info/413805/...

По мне трюк был:

  1. Теперь вам нужно установить высоту содержимого UIView. Затем вы можете либо указать высоту представления содержимого (blech), либо использовать высоту элементов управления, содержащихся в нем, убедившись, что нижний элемент управления ограничен нижней частью представления содержимого.

Я установил высоту и ширину представления внутри scrollView с вертикальным и горизонтальным выравниванием по центру, и это было причиной, почему это не сработало!

После удаления этих ограничений мне нужно добавить одинаковую ширину (scrollView и представление внутри scrollView), и я установил высоту представления внутри scrollView непосредственно с содержимым. Что означает: последний элемент в представлении должен иметь нижнее ограничение к представлению !!