【问题标题】:UICollectionView stops accepting tap gestures after interacting with a UITextFieldUICollectionView 在与 UITextField 交互后停止接受点击手势
【发布时间】: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


【解决方案1】:

好的,感谢您的所有意见。问题是收到UIKeyboardWillShowNotification 后添加到主超级视图的UITapGestureRecognizer,在收到UIKeyboardWillHideNotification 后未正确删除。修复后,一切都像魅力一样!谢谢!

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多