UICollectionView在与UITextField交互后停止接受点击手势

时间:2016-12-06 11:32:41

标签: ios objective-c iphone uicollectionview uitextfield

我有一个带方形单元格的水平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没有产生任何可用的结果。

1 个答案:

答案 0 :(得分:0)

好的,感谢所有输入人员。问题是收到UITapGestureRecognizer后添加到主超级视图的UIKeyboardWillShowNotification,并在收到UIKeyboardWillHideNotification后未正确删除。修好之后,一切都像魅力一样!谢谢!