我有一个UICollectionViewController
,这个集合的单元格有一个子视图-let说A-与框架边界相同的框架。
问题是当我点击这些单元格时,collectionView:didSelectItemAtIndexPath
没有被调用。我还将A的exclusiveTouch设置为YES但仍然没有。而且,当我将A的框架更改为较小的尺寸时,点击剩余区域会触发collectionView:didSelectItemAtIndexPath
,没问题。
在这一点上我应该做些什么来使这个collectionView委托被调用,其中A的边界与单元格相同。
我将不胜感激。
答案 0 :(得分:5)
如果我正确理解了您的问题,那么您的UICollectionViewCells中包含子视图。要触发didSelectItemAtIndexPath以触摸子视图,您需要在界面构建器中禁用“User Interaction Enabled”。我在我的集合视图单元格中有一个UIButton作为子视图,这对我有用。
答案 1 :(得分:1)
将exclusiveTouch
设置为YES会导致接收方阻止将触摸事件传递到同一窗口中的其他视图。所以把它留给NO
否则,如果您的子视图是UIImageView
设置userInteractionEnabled
为YES
否则,如果您的子视图是UIButton
或其他UIControl
子类,它将捕获点击手势,您需要将其更改为普通UIView
子类
答案 2 :(得分:0)
检查您的方法是- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
还是- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
有时会发生。
您是否禁用了单元格的用户互动属性,请检查一次。
答案 3 :(得分:0)
该方法应为override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
并确保:
您可以在“属性”检查器中找到此复选框。
答案 4 :(得分:0)
我要添加我的愚蠢答案,以防万一它可以帮助别人。 在您的ViewController中,请记住设置collectionview的委托
collectionView.delegate = self