【发布时间】:2021-11-28 19:40:07
【问题描述】:
我有一个 UICollectionView,它位于 UITableView 内,并且位于 UIScrollView 内。集合视图是项目的水平滚动轮播,如果集合视图中有足够的项目以使其比屏幕宽度更宽,则可以正常工作。但是我遇到的问题是,如果只有一两个项目(不足以填满屏幕的宽度),那么集合视图似乎会消耗垂直平移手势,并且不会让滚动视图滚动。
这是我的应用程序目前的布局方式。有滚动视图(下图中的绿色),其中包含页面上的所有内容。在其中,有一个包含多个部分的表格视图。每个部分都有一个可点击的部分标题。点击部分标题后,该部分会通过添加包含集合视图的一行来扩展。集合视图是一个水平滚动的流布局集合视图。
只要集合视图中有足够的集合视图单元格使其离开屏幕(如上图所示。但如果只有一个项目,例如(如下一张图片),则如果平移手势开始于集合视图内的任何位置(下图中蓝色区域或棕褐色区域的任何位置),则滚动视图无法垂直滚动。
代码
这里是初始化集合视图的代码:
- (UICollectionView *)collectionView {
if (!self->_collectionView) {
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.minimumInteritemSpacing = 10;
layout.minimumLineSpacing = 10;
layout.sectionInset = UIEdgeInsetsMake(0, 16, 0, 16);
layout.sectionInsetReference = UICollectionViewFlowLayoutSectionInsetFromContentInset;
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self->_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
self->_collectionView.translatesAutoresizingMaskIntoConstraints = NO;
self->_collectionView.backgroundColor = nil;
self->_collectionView.delegate = self;
self->_collectionView.dataSource = self;
[self.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"MyCollectionViewCell"];
}
return self->_collectionView;
}
问题
有谁知道为什么只有一两个项目时集合视图会消耗垂直平移手势或如何解决?
【问题讨论】:
标签: ios uicollectionview uiscrollview uigesturerecognizer uicollectionviewflowlayout