我有一个大小与屏幕大小相同的UICollectionView.它显示的UICollectionViewCells与collectionView的大小相同.每个细胞都有一个UIImage,它是细胞的大小.CollectionView启用了分页,因此它实际上是用户可以滑动的全屏照片幻灯片.
问题是
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
只有当用户用两根手指敲击一个小区或长按一根手指然后释放时才会被调用.它似乎没有单击选择的默认行为.我没有对CollectionView手势识别器进行任何更改,因此无法找到解决此问题的方法.
你确定你没有意外地压倒一切- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
吗?Xcode的代码完成后,"选择"与"取消选择"在过去使我绊倒了.
我只是遇到了同样的问题,事实证明有一个UITapGestureRecognizer
关于UIView
包含它UICollectionView
并且它正在响应.
这解释了为什么didSelectItemAtIndexPath
只有当用户用两根手指敲击或用一根手指长按时才起作用,因为这不会触发UITapGestureRecognizer
.
所以,检查UITapGestureRecognizer
你到那里的所有,不一定是在UICollectionView
直接,但它可以在任何UIView
包含它.
如果您在单元格上有一个视图阻碍了难以处理的单元格内容视图,那么您将无法挂钩该单元格的委托回调.
您将需要在NIB或代码中禁用阻塞视图上的用户交互.
view.userInteractionEnabled = NO;
只需添加已经解决的问题,可能无法使用点击手势,因为这确实会让我感到痛苦.
如果你false
在UICollectionViewDelegate'
s 内返回collectionView:shouldHighlightItemAtIndexPath:
,则点击手势将不起作用,并且collectionView:didSelectItemAtIndexPath:
不会被调用.此委托方法的默认返回值是true
,如果您没有故意实现它,则不会出现问题.