You can set a tap UITapGestureRecognizer to the entire cell and use - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event; to get the tapped object
In -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
do this
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellTapped:)];
tapGesture.numberOfTapsRequired = 1;
[cell addGestureRecognizer:tapGesture];
And in cellTapped
-(void)cellTapped:(UIGestureRecognizer *)gesture
{
CGPoint tapPoint = [gesture locationInView:gesture.view];
UIView *tappedView = [gesture.view hitTest:tapPoint withEvent:nil];
if ([tappedView isKindOfClass:[UILabel class]]) {
NSLog(@"Found");
}
}
Please do check to see whether the user interaction is set on the cell and individual subviews like labels and imageview's . Hope this helps.