UICollectionView criado programaticamente não rola
-
12-12-2019 - |
Pergunta
Estou fazendo um seletor horizontal usando um UICollectionView
.É bastante simples:A UIView
com um UICollectionView
criado programaticamente, usando UICollectionViewFlowLayout
com uma seção, rolagem definida como horizontal.Ele aparece na tela, completo com os dados corretos nas células corretas.Mas ele não rola – na verdade, ele não responde à interação do usuário.
Aqui está o inicializador da visualização:
- (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;
}
Eu tentei configurar programaticamente UserInteractionEnabled
para YES
, mas isso não fez nenhuma diferença (nem deveria, já que UserInteractionEnabled
está configurado para YES
por padrão).FWIW, a visualização da coleção usa padrão UICollectionViewCell
está com UILabel
é adicionado ao seu contentView
s como subvisualizações.
Alguma idéia de por que isso não está rolando?Toda e qualquer ajuda é muito apreciada.
Solução
Ok, isso acabou sendo idiota da minha parte e fácil de consertar.Defino o quadro da visualização da coleção como a visualização pai frame
em vez de seu bounds
.Isso causou todos os tipos de problemas de layout automático e fez com que os eventos de toque simplesmente não fossem registrados.Tudo consertado agora.