将ScrollView中的Touches传递给下面的CollectionView

时间:2014-01-05 09:59:01

标签: ios objective-c uiscrollview uicollectionview touch-event

我有以下视图层次结构:

UIView - root

-UICollectionView

-UIScrollView

BOTH是根视图的子视图,而不是彼此。

我希望scrollview只能垂直滚动而collectionview只能水平滚动。

我遇到的问题是让集合视图接收到滚动视图下方的触摸。

阅读其他SO问题,但无法找到解决方案。尝试在滚动视图的子类中重写触摸事件方法,但没有运气。

2 个答案:

答案 0 :(得分:1)

最简单的解决方法是,

1)将UICollectionView添加到UIScrollView

2)将UICollectionView的图钉左,右,上,下至UIScrollView,然后

3)将UIScrollView的左侧,右侧,顶部,底部固定在它的父级“UIView”上,如果它有一个!

这样,他们将根据内容自动知道谁需要响应哪些滚动事件。

答案 1 :(得分:0)

在现有的UIScrollView(2)和UIScrollView(3)之上添加额外的UICollectionView(1),并将其委托设置为引用(2)和(3)(例如您的父视图或视图控制器)。在该委托中实现以下方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView1
{
    _scrollView2.contentOffset = CGPointMake(0.0, scrollView1.contentOffset.y);
    _collectionView3.contentOffset = CGPointMake(scrollView1.contentOffset.x, 0.0);
}

(不要忘记正确设置_scrollView1.contentSize。)