2012-05-23 3 views
3

Я хотел бы иметь один большой scrollview с включенной горизонтальной прокруткой. Внутри этого scrollView я бы хотел (скажем) 5 других scrollviews, которые можно прокручивать по вертикали.Как иметь несколько scrollViews в одном scrollView

Может ли кто-нибудь указать мне в правильном направлении, как обращаться с прикосновениями?

Я собираюсь сделать два указателя gesturerecognizer (1 для крана и 1 для панорамирования) и использовать дельта значений X и Y для расчета горизонтального или вертикального прокрутки. После того, как я проверил направление, я установил большой скроллер или один из скроллеров для включения или выключения. Правильно ли это?


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

for (int i = 0; i < NumberOfVerticalScrollers; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 

     UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:frame]; 
     scroller.directionalLockEnabled = YES; 
     scroller.contentSize = CGSizeMake(320, 960); 
     [self.scrollView addSubview:scroller]; 
} 
self.scrollView.delegate = self; 
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * NumberOfVerticalScrollers, self.scrollView.frame.size.height); 

ответ

1

Вам только нужно создать основной Scrollview, который может прокручивать по горизонтали, и просто нужно для добавления других видов прокрутки на главном просмотре прокрутки с использованием метода addSubView. iOS обрабатывает все необходимые события для правильной обработки прокрутки. Вам нужно только назначить правильные content size и frame каждого прокрутки.

+0

спасибо, что это сработало, отредактирует мой ответ с некоторым примером кода – BarryK88

0

Я не думаю, что вам нужно будет что-нибудь придумать.

see this question

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

1

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

Вы можете слушать:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

, и когда это происходит, вы можете просто отключить прокрутки на ваших вертикальных scrollviews

И на следующем включении прокрутки назад:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
0

Там в приложение под названием «Pulse», которое использует вертикальное представление таблицы, где каждая ячейка просмотра таблицы может быть прокручена по горизонтали и включает в себя другой вид таблицы. Это касается кэширования и событий пользовательского интерфейса. Вам нужно найти пример того, что и оценить его для своих целей (возможно, вращающейся реализацию по умолчанию на 90 градусов)

How to recreate a Pulse-like UI?

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