UICollectionView委托的tap方法没有被调用

hen*_*dev 20 iphone cocoa-touch ios uicollectionview

我有一个集合视图,datasource委托工作得很好,但是UICollectionViewDelegate:

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"didselect");
}
Run Code Online (Sandbox Code Playgroud)

没有被调用,虽然我设置了委托(就像我使用数据源并且它工作)我不得不提到我的单元格从一个笔尖加载并连接到一个子类UICollectionViewCell,无论如何,单元格不响应我的触摸.我UIImageView在我的单元格中启用了用户交互.

还:

-(BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"this is caled");
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

没有被召唤!

正如我提到的,我确实设置了:

[self.collectionView setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

而且当然

<UICollectionViewDelegate>
Run Code Online (Sandbox Code Playgroud)

我也没有任何touchBegan覆盖..

更新:

奇怪的!如果我长按,它只会被调用!我怎么能解决这个问题,我将delayedContentTouches设置为NO加上我没有实现任何手势识别器.

请帮忙.谢谢.

aks*_*h1t 40

看起来UITapGestureRecognizer在视图层次结构中有某个地方.默认情况下,UITapGestureRecognizers消耗它们接收的触摸,这意味着它不会传递给层次结构中它下面的视图.您需要找到流氓轻击手势并添加此行

tapGestureRecognizer.cancelsTouchesInView = NO;
Run Code Online (Sandbox Code Playgroud)

这将使它通过触摸层次结构中它下面的视图,并希望解决您的问题.


Tim*_*rov 9

看起来你已经在某处添加了TapGestureRecognizer,它可以防止选择单元格.检查一下,这应该是问题所在.


Abd*_*que -2

也许您应该在集合视图上使用点击手势。