Parallax UIScrollView - 在一个scrollViewDidScroll方法中处理两个视图?

时间:2014-02-13 13:52:21

标签: ios objective-c uiscrollview parallax uiscrollviewdelegate

我正在使用两个UIScrollView实例(cardScrollViewtileScrollView)创建基本的视差效果,就像iOS7应用切换器一样。我以不同的速度滚动一个,就像这样:

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 个答案:

答案 0 :(得分:0)

您将在此方法中获得两者的参考,并按照要求工作:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

 {
   if (scrollView == self.tileScrollView) {
      // do something
   }
   else {
      // do something
   }
  }