UICollectionView只调用didSelectItemAtIndexPath如果用户双击,不会调用时,用户单击
我有一个关于屏幕大小的UICollectionView。 它显示的UICollectionViewCells与collectionView的大小相同。 每个单元格都有一个UIImage,它是单元格的大小。 CollectionView具有分页function,所以本质上它是一个全屏的照片幻灯片,用户可以滑过。
问题是这样的
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
只在用户用手指敲击单元格或长按一个手指然后释放时才被调用。 它似乎没有单击select的默认行为。 我还没有对CollectionView手势识别器进行任何更改,因此无法find解决此问题的解决scheme。
你确定你不是不小心重写- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
? Xcode代码完成后,“select”与“取消select”已经让我失望了。
我只是有同样的问题,事实certificate,有一个UITapGestureRecognizer
的UIView
包含UICollectionView
,它是响应而不是。
这就解释了为什么didSelectItemAtIndexPath
只在用户用两个手指点击或者用一个手指长时间按下UITapGestureRecognizer
因为这不会触发UITapGestureRecognizer
。
所以,检查所有你得到的UITapGestureRecognizer
,不一定直接在UICollectionView
,但它可以在任何包含它的UIView
。
如果您对阻止单元格内容视图的单元格有疑问,那么您将无法挂钩到该单元格的代表callback。
您将要禁用在NIB或代码中的障碍视图的用户交互。
view.userInteractionEnabled = NO;
只要在已经解决的问题上再增加一个点击手势可能不起作用的情况,因为这确实使我受到折磨。
如果您在UICollectionViewDelegate'
的collectionView:shouldHighlightItemAtIndexPath:
返回false
,则轻拍手势将不起作用,并且不会调用collectionView:didSelectItemAtIndexPath:
collectionView:shouldHighlightItemAtIndexPath:
这个委托方法的默认返回值是true
,所以如果你没有有意实现的话,你就不会有问题。
我自己也遇到了这个问题。 最初我有button和标签,然后我重构我的用户界面,并将这些button/标签转换为UICollectionView
单元格。
我终于意识到button正在消耗我的水龙头。 我不假思索地把原来的button移动到单元格中,而不是把它变成一个直的UIImage
。 我已经摧毁了相关的button的动作,只是寻找细胞的select,所以我花了一段时间才弄清楚。
回想起来很愚蠢和明显,但花了我几个小时才明白我所做的。
我只是有同样的问题…我重写touchesBegan在CollectionCell视图,这导致didSelectItemAtIndexPath不触发时,我触摸单元格。 删除覆盖,所有的工作。
我在Swift 3和xcode 8中遇到了这个问题,我有一个视图和一个集合视图里面。集合视图具有userInteractionEnabled为true,仍然没有工作。通过重写shouldHighlightItemAt修复这个问题,我没有任何额外的/自定义实现在这个方法,所以我没有重写这个方法。添加下面的代码didSelectItem方法被调用。
func collectionView(_ collectionView: UICollectionView, shouldHighlightItemAt indexPath: IndexPath) -> Bool { return true }
如果您只使用didselect:
self.collectionView.allowsMultipleSelection = false
或者删除那一行。
我偶然发现了这个问题,这让我感到沮丧,直到我发现这一点。当我在Storyboard的CollectionView中select左上angular的单元格时, 您只需取消选中“User Interaction Enabled” 。 并解决问题
记得要将UICollectionViewDataSource,UICollectionViewDelegate添加到类中