¿Cómo puedo saber cuándo se toca el background (es decir, no una celda) en una UICollectionView?

He intentado subclasificar UICollectionView y toques primordiales. touchesBegan:withEvent: y hitTest:WithEvent: y ambos methods se activan cuando toco una celda. Sin embargo, si toco el espacio entre las celdas, nada sucede. Esto es lo que he creado:

 @interface WSImageGalleryCollectionView : UICollectionView @end 

..y..

 @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 

Nota: los reconocedores de gestos parecen tener exactamente el mismo problema, por lo que intenté pasar a nivel inferior con toques de Borgoña.

Solo necesita configurar una vista como vista de background para luego agregarle un reconocedor de gestos que le guste:

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

Debes tener algo más que impide que touchesBegan dispare.

La subclass UICollectionView y el uso de esa subclass dentro de UICollectionViewController le permitirán detectar grifos de celdas touchesBegan en touchesBegan .

Acabo de probarlo modificando el ejemplo CollectionView-simple de Apple.

En mi caso, el problema era que puedes hacer clic en el background siempre que esté "claro". De lo contrario, simplemente establecer un color de background hace que se pueda hacer clic en el background. No sé muy bien por qué esto es así, pero la solución simple fue simplemente darle un color de background.

Editar: En realidad, esto pudo haber tenido algo que ver con configurar la bandera "opaca".