【发布时间】:2017-04-21 00:46:48
【问题描述】:
我有一个带有方形单元格的水平 UICollectionView,它只允许单选,上面有一个 UITextField。集合视图配置如下:
UICollectionViewFlowLayout* flowLayout = [UICollectionViewFlowLayout new];
flowLayout.minimumLineSpacing = kCellSpacing;
flowLayout.minimumInteritemSpacing = kCellSpacing;
flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flowLayout.itemSize = CGSizeMake(kCellWidth, kCellWidth);
self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:flowLayout];
self.collectionView.layer.backgroundColor = [UIColor grayColor3].CGColor;
self.collectionView.layer.cornerRadius = kCornerRadius;
self.collectionView.showsHorizontalScrollIndicator = NO;
self.collectionView.allowsMultipleSelection = NO;
self.collectionView.bounces = NO;
self.collectionView.exclusiveTouch = YES;
[self addSubview:self.collectionView];
文本字段的代码:
_amountTextField = [[UITextField alloc] init];
_amountTextField.keyboardType = UIKeyboardTypeDecimalPad;
_amountTextField.font = [_amountTextField.font fontWithSize:26.0];
_amountTextField.textField.delegate = self;
[self addSubview:_amountTextField];
UICollectionViewCells 已正确配置 - 将子视图添加到 contentView 或 backgroundView,每个子视图上禁用 userInteraction,以便将手势传递给超级视图。
问题:
选择和取消选择文本字段后,我遇到了最奇怪的问题:我的 UICollectionView 停止响应选择单元格。我已经设法确定突出显示效果很好,有时(这几乎是不确定的)也允许选择。
如果我长按一个单元格,则按以下顺序调用委托方法:
-(BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath
-(void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
有时
-(BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
滚动 collectionView 的滚动视图也可以。
这几乎是我可以分享的关于这个问题的全部内容。我真的很感激一些帮助。谷歌搜索和搜索 stackoverflow 没有产生可用的结果。
【问题讨论】:
-
您能否提供您的收藏视图的快照,您是如何设计的
-
@SagarSnehi 不幸的是,这是不可能的,但我可以向你描述:我们有一个水平的 UICollectionView,大约 50 点高,从左到右延伸,单元格也是 50x50pts 所以只有 ~一次显示 5-7 个单元格。集合视图本身包含大约 15-20 个单元格。其余部分在 collectionviewflowlayout 的代码中描述。
-
你在哪里添加了 textField
-
如描述中所述:在集合视图上方添加了文本字段。它们位于视图层次结构的同一级别,但具有不同的超级视图。他们的superview有一个共同的父母。
-
在您取消选择
UITextField后,collectionViews 的超级视图是否禁用了其userInteraction?
标签: ios objective-c iphone uicollectionview uitextfield