如何在UICollectionView上触摸背景(即不是单元格)?

时间:2013-11-03 09:51:08

标签: ios uicollectionview

我尝试过子类化UICollectionView并覆盖touchesBegan:withEvent:hitTest:WithEvent:,当我触摸一个单元格时,这两种方法都会触发。但是,如果我触摸单元格之间的空间,则根本不会发生任何事情。这就是我创造的内容:

@interface WSImageGalleryCollectionView : UICollectionView
@end

.. ..和

@implementation WSImageGalleryCollectionView

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"Touches began");
    [super touchesBegan:touches withEvent:event];
}

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    NSLog(@"Hit test reached");
    return [super hitTest:point withEvent:event];
}

@end

注意:手势识别器似乎有完全相同的问题,这就是我尝试使用touchesBegan进行较低级别的原因。

3 个答案:

答案 0 :(得分:12)

您只需将视图设置为背景视图,然后可以添加手势识别器:

collectionView.backgroundView = [[UIView alloc] init];
[collectionView.backgroundView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnBackgroundRecognized)]];

答案 1 :(得分:0)

你必须得到阻止touchesBegan被解雇的其他东西。

UICollectionView进行子类化并在UICollectionViewController内使用该子类将允许您检测touchesBegan中的中间单元格点击。

我刚试过修改Apple的CollectionView-simple样本。

答案 2 :(得分:0)

在我的情况下,问题是你可以在“清晰”彩色时点击背景。否则,只需设置背景颜色即可使背景可点击。我不太清楚为什么会这样,但简单的解决办法是给它一个背景颜色。

编辑:实际上,这可能与设置“不透明”标志有关。