在具有不同滚动方向的另一个滚动视图内滚动视图

时间:2013-08-12 16:02:50

标签: ios uiscrollview offset horizontal-scrolling vertical-scrolling

我正在尝试设计类似于此的视图:

iPhone_scrollView

也就是说,我在另一个UIScrollView内有一个UIScrollView。浅灰色的滚动视图是父级:它占据整个屏幕宽度,仅用于垂直滚动。其中的滚动视图(深灰色)仅占据其父级宽度的一部分,仅用于水平滚动。

我想要实现的行为是:我希望能够同时垂直滚动父滚动视图的所有内容,包括内部滚动视图中的内容。但是,另一方面,我希望能够仅水平滚动内部滚动视图。

我设法避免通过将其内容宽度设置到屏幕来水平滚动父滚动视图,但我无法避免在其内部垂直滚动滚动视图:我希望内部的滚动视图仅垂直滚动当整个父滚动视图发生时。

我该如何管理这种情况?谢谢!

编辑。我试图这样做:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
   if (scrollView == self.childScrollView) {
      [self.parentScrollView setContentOffset:CGPointMake(self.parentScrollView.contentOffset.x, self.childScrollView.contentOffset.y)];
      [scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x, 0)];
    }
}

我正在尝试做的是,当垂直拖动子视图控制器时,滚动其父视图控制器,该控制器也应该滚动子视图控制器。也就是说,当垂直拖动子视图控制器时,我希望整个父滚动视图(包括子视图)垂直滚动相同的偏移量。但是当水平拖动子视图控制器时,我只想滚动子视图控制器本身并保持其父视图固定。我仍然无法实现这种行为,有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

添加点击手势怎么样?

类似

向滚动视图添加点按手势

最初设置scrollDarkGrey.enabled = NO

点击深灰色scrollViewscrollDarkGrey.enabled =YES

然后点击父滚动scrollDarkGrey.enabled = NO

答案 1 :(得分:0)

尝试将内部scrollView的高度设置为父滚动视图内容的高度。