Parallax UIScrollView - обработка двух представлений в одном методе scrollViewDidScroll?

Я создаю базовый эффект параллакса, очень похожий на переключатель приложений iOS7, используя два UIScrollView экземпляры (cardScrollView а также tileScrollView). Я прокручиваю одну рядом с другой, с другой скоростью, вот так:

if ([scrollView isEqual:self.tileScrollView]) {
    [self.cardScrollView setContentOffset:CGPointMake((self.tileScrollView.contentOffset.x + 110) * TILE_CARD_DELTA,
                                                      self.cardScrollView.contentOffset.y)];
}

Это отлично работает при прокрутке tileScrollView, Тем не менее, я хотел бы, чтобы то же самое работало в обратном направлении, то есть я могу прокручивать cardScrollView и имеют tileScrollView двигаться соответственно. У меня проблема в том, что вызов setContentOffset на самом деле вызывает cardScrollView звонить scrollViewDidScroll само по себе, то есть они постоянно пытаются установить друг друга в одно и то же время, и все виды ада вырвались на свободу.

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

Как я могу обойти это?

1 ответ

Вы получаете ссылку как в этом методе, так и на работу согласно требованию:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

 {
   if (scrollView == self.tileScrollView) {
      // do something
   }
   else {
      // do something
   }
  }
Другие вопросы по тегам