我有一个带方形单元格的水平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];
textField的代码:
_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,以便将手势传递给superview。
在选择和取消选择文本字段后,我遇到了一个最奇怪的问题:我的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的scrollview也正常工作。
这几乎是我可以分享的关于这个问题的全部内容。我真的很感激一些帮助。谷歌搜索和搜索stackoverflow没有产生任何可用的结果。
答案 0 :(得分:0)
好的,感谢所有输入人员。问题是收到UITapGestureRecognizer
后添加到主超级视图的UIKeyboardWillShowNotification
,并在收到UIKeyboardWillHideNotification
后未正确删除。修好之后,一切都像魅力一样!谢谢!