我有以下视图层次结构:
UIView - root
-UICollectionView
-UIScrollView
BOTH是根视图的子视图,而不是彼此。
我希望scrollview只能垂直滚动而collectionview只能水平滚动。
我遇到的问题是让集合视图接收到滚动视图下方的触摸。
阅读其他SO问题,但无法找到解决方案。尝试在滚动视图的子类中重写触摸事件方法,但没有运气。
答案 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
。)