繁体   English   中英

collectionView:didSelectItemAtIndexPath 不会在点击时调用

[英]collectionView:didSelectItemAtIndexPath does not get called on tap

我有一个UICollectionViewController并且这个集合的单元格有一个子视图 - 假设 A- 与单元格边界相同的框架。

问题是当我点击这些单元格时, collectionView:didSelectItemAtIndexPath不会被调用。 我也将 A 的 exclusiveTouch 设置为 YES 但仍然没有。 而且当我将 A 的框架更改为较小的尺寸时,点击剩余区域会触发collectionView:didSelectItemAtIndexPath ,没问题。

那时我应该怎么做才能使这个 collectionView 委托在 A 的边界与单元格相同的地方被调用。

我将不胜感激任何意见。

如果我正确理解了您的问题,那么您将拥有带有子视图的 UICollectionViewCells。 为了在子视图上触发 didSelectItemAtIndexPath,您需要在界面构建器中禁用“启用用户交互”。 我的集合视图单元格中有一个 UIButton 作为子视图,这对我有用。

exclusiveTouch设置为YES 会导致接收器阻止将触摸事件传递到同一窗口中的其他视图。 所以把它留给NO

否则,如果您的子视图是UIImageView则将userInteractionEnabled设置为 YES

否则,如果您的子视图是UIButton或其他UIControl子类,它将捕获点击手势,您需要将其更改为普通的UIView子类

检查你的方法是- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath

它有时会发生。

您是否禁用了单元格的用户交互属性,请检查一次。

该方法应该override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)并确保:

  • 单元格本身已选中用户交互启用(在您的故事板中)
  • 此单元格的所有子项也已选中用户交互启用

您可以在属性检查器中找到此复选框。

我正在添加我的愚蠢答案,以防万一它可以帮助其他人。 在您的视图控制器中记得设置集合视图的委托

collectionView.delegate = self

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM