Вопрос по iphone – Как иметь несколько scrollViews в одном scrollView
Я хотел бы иметь один большой вид прокрутки с включенной горизонтальной прокруткой. В этом scrollView я хотел бы иметь (скажем, 5) других scrollview, которые можно прокручивать по вертикали.
Кто-нибудь может указать мне правильное направление для того, как справиться с touchevents?
Я думаю о создании двух распознавателей жестов (1 для касания и 1 для панорамирования) и использую дельту значений X и Y для вычисления горизонтального или вертикального пролистывания. После того, как я проверил направление, я включил или отключил большой скроллер или один из скроллеров. Это правильный подход?
РЕДАКТИРОВАТЬ: Вместо того, чтобы использовать мой метод, описанный выше, я просто смог добавить свои 5 видов прокрутки (вертикальная прокрутка) в один большой вид прокрутки (горизонтальный), добавив 5 видов прокрутки как подпредставление большого. Может быть, этот код может помочь кому-то, поэтому предоставил пример кода.
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);
Вам нужно только создать основной вид прокрутки, который можно прокручивать по горизонтали, и просто нужно добавить другие виды прокрутки на основной вид прокрутки, используяaddSubView
метод. iOS обрабатывает все необходимые события для правильной обработки прокрутки. Вам нужно только назначить правильныйcontent size
а такжеframe
каждого прокрутки.
Это приложение под названием «Pulse». который использует вертикальное представление таблицы, где каждая ячейка табличного представления может быть прокручена горизонтально и включает другое представление таблицы. Это заботится о кэшировании и событиях пользовательского интерфейса. Вам нужно найти пример этого и оценить его для ваших целей (возможно, поворот реализации по умолчанию на 90 градусов)
Для этого вам нужно просто сделать 1 горизонтальный вид прокрутки, где вы добавите в качестве подпредставлений другие виды вертикальной прокрутки. Важно учитывать, что когда базовая прокрутка будет прокручиваться горизонтально, вы должны отключить прокрутку на вертикальной прокрутке.
Вы можете слушать:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
и когда это происходит, вы можете просто отключить прокрутку на ваших вертикальных прокрутки
И на следующем вы включаете прокрутку назад:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate