UicollectionView creato a livello programmatico non scorre
-
12-12-2019 - |
Domanda
Sto facendo un raccoglitore orizzontale usando un UICollectionView
.È abbastanza semplice: un UIView
con un UICollectionView
creato a livello programmatico, utilizzando UICollectionViewFlowLayout
con una sezione, a scorrimento impostato su orizzontale.Appare su schermo, completo con i dati corretti nelle celle corrette.Ma non scorre --- infatti non risponde a interazione dell'utente.
Ecco l'Inizializzatore per la vista:
- (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;
}
.
Ho provato a pianificare il programmaticamente UserInteractionEnabled
a YES
, ma ciò non ha fatto alcuna differenza (né non dovrebbe avere, poiché UserInteractionEnabled
è impostato su YES
per impostazione predefinita).Fwiw, la vista della raccolta utilizza UICollectionViewCell
s standard con UILabel
s aggiunto ai loro contentView
s come sottoviews.
Qualche pensato sul perché questo non sta scorrendo?Qualsiasi e tutto aiuta molto molto apprezzato.
Soluzione
OK, questo si è rivelato sia stupido dalla mia parte che facile da risolvere.Ho impostato il telaio della visualizzazione della raccolta sul frame
Gcode della sua vista genitore anziché il suo bounds
.Ciò ha causato tutti i tipi di problemi di AutoLayout e ha portato a tattili eventi semplicemente non registrati.Tutto fissato ora.