3

を使用して水平ピッカーを作成していUICollectionViewます。UIViewそれは非常に簡単です:UICollectionViewプログラムで作成された A を使用UICollectionViewFlowLayoutし、1 つのセクションを使用して、スクロールを水平に設定します。画面に表示され、正しいセルに正しいデータが表示されます。しかし、スクロールはしません。実際、ユーザーの操作にはまったく反応しません。

ビューの初期化子は次のとおりです。

- (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、コレクション ビューは標準UICollectionViewCellの を使用し、がサブビューとしてUILabelに追加されます。contentView

これがスクロールしない理由について何か考えはありますか? ありとあらゆる助けが大歓迎です。

4

1 に答える 1

6

わかりました、これは私の側ではばかげていて、簡単に修正できることがわかりました。コレクション ビューのフレームを、親ビューframeではなく親ビューに設定しましたbounds。これにより、あらゆる種類の自動レイアウトの問題が発生し、タッチ イベントが単に登録されないという結果になりました。すべて修正されました。

于 2012-10-08T20:34:29.653 に答える