确定UICollectionViewCell中的tapped元素

时间:2014-05-24 08:14:21

标签: ios objective-c ios7 uikit

我有UICollectionView个自定义单元格。当我点击一个单元格时,我得到一个collectionView: didSelectItemAtIndexPath:

这不允许我确定单元格内的哪个元素被轻击(图像或标签)。如何确定单元格中的哪个元素被点击?

3 个答案:

答案 0 :(得分:2)

您必须继承UICollectionViewCell并在UICollectioView中拥有这些对象。然后使用

等方法在单元格中创建delegate
- (void)collectionCell:(UICollectionViewCell *)cell didTapButtonWithIndex:(NSUInteger)index

并将视图控制器设置为每个单元格的委托。因此,您将使用这些方法而不是collectionView: didSelectItemAtIndexPath:

来获取操作

答案 1 :(得分:2)

您可以为整个单元格设置点按UITapGestureRecognizer,然后使用- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;获取点按的对象

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 这样做

 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellTapped:)];
    tapGesture.numberOfTapsRequired = 1;
    [cell addGestureRecognizer:tapGesture];

并在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");
    }
}

请检查是否在单元格和单个子视图(如标签和图像视图)上设置了用户交互。希望这会有所帮助。

答案 2 :(得分:1)

UITapGestureRecognizer中创建单元格时,只需将cellForItem添加到单元格元素中,然后添加要调用的目标和选择器。然后,选择器方法将获得一个具有UIView属性的识别器,该属性将成为您选择的元素。