我正在使用 UICollectionView
制作水平选择器。这很简单:以编程方式创建一个带有 UICollectionView
的 UIView
,使用带有一个部分的 UICollectionViewFlowLayout
,滚动设置为水平。它出现在屏幕上,并在正确的单元格中包含正确的数据。但它不滚动——实际上它根本不响应用户交互。
这是 View 的初始化程序:
- (id)initWithFrame:(CGRect)frame andItemData:(NSArray *)itemData
{
self = [super initWithFrame:frame];
if (self) {
_itemData = itemData;
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[flowLayout setItemSize:CGSizeMake(kCellWidth, kCellHeight)];
[flowLayout setMinimumInteritemSpacing:0.f];
[flowLayout setMinimumLineSpacing:0.f];
_collectionView = [[UICollectionView alloc] initWithFrame:[self frame] collectionViewLayout:flowLayout];
[_collectionView setDataSource:self];
[_collectionView setDelegate:self];
[_collectionView setBounces:NO];
[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"HorizontalPickerCell"];
[self addSubview:_collectionView];
}
return self;
}
我尝试以编程方式将 UserInteractionEnabled
设置为 YES
,但这没有任何区别(也不应该有任何区别,因为设置了 UserInteractionEnabled
默认为 YES
)。 FWIW, Collection View 使用标准的 UICollectionViewCell
,并将 UILabel
作为 subview 添加到它们的 contentView
。
关于为什么这不是滚动的任何想法?非常感谢任何帮助。
最佳答案
好吧,事实证明这对我来说既愚蠢又容易修复。我将 Collection View 的框架设置为其父 View 的 frame
而不是其 bounds
。这导致了各种自动布局问题,并导致触摸事件根本没有注册。现在全部修复。
关于ios - 以编程方式创建的 UICollectionView 不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698244/