2013-02-22 7 views
2

В моем UIViewController у меня есть UIScrollView и UIView. Это два разных вида, значит UIView не находится внутри UIScrollView. У меня разные взгляды на scrollview, которые я устанавливаю программно и увеличиваю contentSize. И это UIView скрыто, я показываю иногда. Проблема в том, что когда я скрываю это UIView, то UIScrollView останавливает прокрутку.UIScrollView не прокручивается в ios6

Почему это происходит?

Я установил все передние края для просмотра обоих. Это имеет значение? Прошу вас, пожалуйста.

Привет всем, я делюсь образом моего ViewController Sceneenter image description here

Я использую Автокомпоновку (iOS6). Scroll View ContentSize - (768,1400), который я устанавливаю в ViewDidAppear. View ниже Scroll View скрыт и Scroll View прокручивается без проблем.

Теперь, если я покажу и спрячу View, замки Scroll View, его нельзя прокручивать сейчас. Это проблема, с которой я столкнулся. Я больше ничего не делаю в коде, чем задаю размер содержимого. Если вам нужна какая-либо другая информация, сообщите мне.

+1

, пожалуйста, добавьте код. – Kuba

+0

Вид, который вы скрываете, заключается в том, что contentView прокрутки? Если это так ... Вам понадобится другой взгляд между –

+0

@Rob, я думаю, мне нужно полностью отказаться от вопросов UIKit ... –

ответ

0

Без кода, я догадку ...

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

Другая возможность - если вы отключили взаимодействие с пользователем.

6

contentSize в iOS 6 «автоматические размеры» с автоматическим расположением. Это означает, что вы не можете установить contentSize. Есть хаки, которые предлагают установить его в вызове viewDidAppear, но я бы избегал этого. Если вы читаете iOS 6 release notes (найдите страницу UIScrollView на странице), вы получите пару решений. Один из них включает в себя свойство translatesAutoresizingMaskIntoConstraints.

+0

Я согласен с вашей интуицией здесь, но на практике я обнаружил, что он не пересчитывает 'contentSize', если я просто устанавливаю скрытие subview или альфа нулевой.Он работает только изящно, если я сброшу ограничение высоты скрываемого элемента. Любопытно, что даже если я удалю subview, он не будет пересчитывать 'contentSize', если в прокрутке отсутствует что-то _else_, которое имеет ограничения, которые могут привести к пересчету' contentSize'. Если удаленное subview является последним, 'contentSize' не пересчитывается (хотя вы можете сбросить вручную). – Rob

+0

Никогда не говорил, что он работает правильно. Просто указывая «причину», почему она не работает в iOS 6. В примечаниях к выпуску упоминается способ обойти это. – Luke

+0

Привет, я выяснил, что он устанавливает contentSize для размера кадра UIScrollView. Как и когда он настраивается? – Bhushan

5

Удалите весь свой код, связанный с размером размера содержимого прокрутки. Autolayout использует это во время прокрутки. После этого добавьте следующий код:

// Add 200 points to the bottom of the scroll view 
[self.scrollView setContentInset:UIEdgeInsetsMake(0, 0, 200, 0)]; 
self.scrollView.translatesAutoresizingMaskIntoConstraints= NO; 
Смежные вопросы