[英]collectionView :didSelectItemAtIndexPath called with a delay
[英]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.