Вопрос по iphone – Как иметь несколько scrollViews в одном scrollView

3

Я хотел бы иметь один большой вид прокрутки с включенной горизонтальной прокруткой. В этом 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);

Ваш Ответ

4   ответа
1

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

спасибо, это сработало, отредактирую мой ответ с примером кода BarryK88
0

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

Как воссоздать импульсный интерфейс?

0

Я не думаю, что вам нужно делать что-то необычное.

увидеть этот вопрос

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

1

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

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

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

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

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

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

Похожие вопросы