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
}
}