Как я могу вложить UIScrollView в UIScrollView, чтобы пользователь мог прокручивать внутренний UIScrollView? - PullRequest
8 голосов
/ 26 мая 2009

Я еще не пробовал этого, но я предполагаю, что мне придется отключить прокрутку родительского представления прокрутки, как только я узнаю, что пользователь захочет прокрутить представление дочернего прокрутки, верно?

Оба вида прокрутки имеют горизонтальную прокрутку.

Как я могу временно отключить прокрутку обнаружения родителя? Или есть другой способ?

Ответы [ 4 ]

9 голосов
/ 26 мая 2009

UIScrollView имеет свойство с именем scrollEnabled, которое можно установить на NO, чтобы отключить прокрутку в родительском представлении прокрутки.

Я еще не пробовал, но вы можете просто обнаружить, что он делает правильные вещи, то есть, внутренний вид прокрутки прокручивается до тех пор, пока он больше не может прокручиваться, и в этот момент прокручивается внешний вид прокрутки.

2 голосов
/ 23 октября 2013

Это очень возможно. Самый простой способ - отключить свойство scrollEnabled, вы также можете попробовать установить внешние UIScrollView s contentSize в его границы, чтобы он не прокручивался. В зависимости от того, что вам нужно, вы также можете установить Нет на bounce, но это в основном сделает ваш просмотр с прокруткой обычным UIView.

Если у вас есть контроль над всеми дочерними UIScrollView, вы можете реализовать протокол UIScrollViewDelegate, но если вы этого не сделаете, или ваш ребенок UIScrollView действительно UITableView, или UICollectionView, тогда вы не можете полагаться на протокол UIScrollViewDelegate, но помните, что UIScrollView поставляется с panGestureRecognizer, и вы можете играть с ним. Мощный, но неуклюжий способ - добавить наблюдателя к свойству panGestureRecognizer state, чтобы вы могли захватывать все события, не будучи делегатом рассматриваемого UIScrollView.

0 голосов
/ 02 февраля 2011

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

[scrollView setContentSize:CGSizeMake(scrollView.frame.size.width,600)];

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

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

Надеюсь, это поможет!

0 голосов
/ 08 сентября 2009

Я сделал это, и это заставляет родительский scrollView НЕ прокручиваться больше, что нормально , но мой дочерний scrollView, который был выдвинут с помощью presentModalViewController, все еще не отвечает на события прокрутки (например, прокрутка вверх или вниз). Я явно что-то упускаю ...

РЕДАКТИРОВАТЬ : наконец-то все получилось, используя scrollEnabled в родительском представлении. Спасибо.

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