ios - 以编程方式创建的 UICollectionView 不滚动

标签 ios uicollectionview

我正在使用 UICollectionView 制作水平选择器。这很简单:以编程方式创建一个带有 UICollectionViewUIView,使用带有一个部分的 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/

相关文章:

ios - 将 View 添加到 UIStackView 后,UITableViewCell 不会更新高度

ios - 如何在一个 Viewcontroller 上添加两个 CollectionView?

ios - 创建一个函数以在Swift中分隔输入数组和输出数组分号

ios - 未找到目标,请重新连接设备,Xcode :Device Support File

ios - 创建具有无限或重复滚动的 UITableView

ios - 如何在 swift 中以编程方式保存 pdf

ios - 如何在 Scroll 上为 UICollectionViewCell 的大小设置动画,以便中间的最大?

swift - 使用按钮从 uicollectionviewCell 中删除单核心数据项

ios - UICollectionView — 缩放单元格以适合屏幕

ios - 在 UICollectionView 的单元格中显示相同的图像