从 Tap Gesture 中获取特定的集合视图单元格

Posted

技术标签:

【中文标题】从 Tap Gesture 中获取特定的集合视图单元格【英文标题】:Grab specific Collection View Cell from Tap Gesture 【发布时间】:2012-12-29 01:59:45 【问题描述】:

我有一个 UICollectionView 显示图像缩略图。网格中的每个图像视图都有一个点击手势。我的问题是,我怎样才能抓住被窃听的确切单元格?例如。 “点击索引 #43”。

附加评论

点击手势是以编程方式创建的,未使用情节提要。 我在这个项目中启用了 ARC 和 Story Board。

这是我最近的一次:

UICollectionViewController

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
                 cellForItemAtIndexPath:(NSIndexPath *)indexPath

    int row = [indexPath row];

    CollectionViewCell *Cell = [collectionView
        dequeueReusableCellWithReuseIdentifier:@"Cell"
                                  forIndexPath:indexPath];
    // Enable tap gesture on each ImageView
    [Cell.ImageView setUserInteractionEnabled:YES];
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture)];
    [tapGesture setNumberOfTouchesRequired:1];
    [tapGesture setNumberOfTapsRequired:1];
    [tapGesture setDelegate:self];
    [Cell.ImageView addGestureRecognizer:tapGesture];

    Cell.ImageView.tag = row; // This tags correctly



- (void)tapShowImage // Also, for some reason, 
                     // - (void)handleTapGesture:(UITapGestureRecognizer *)sender
                     // doesn't work. I get an invalid selector error.

    NSLog(@"%i", Cell.ImageView.tag);
    // Doesn't work because I can't call Cell.ImageView.tag here.
    // Might be because I"m using SDWebImage to load the image
    // into the ImageView above but not sure.

【问题讨论】:

可能已经晚了,你可能已经想通了。但是在UITapGestureRecognizer 的初始化中,选择器应该是handleTapGesture:,而不仅仅是handleTapGesture。注意: 的使用。这是为了表明你在方法声明中有一个参数,即sender 【参考方案1】:

您无需为每个单元格添加点击识别器。您可以在 collectionView:didSelectItemAtIndexPath: 方法中获取被点击单元格的 indexPath。

【讨论】:

但是如果他想获得其他类型的手势,比如长按、双击等等呢?? @giuseppe,这不是问题所在。如果他想这样做,他必须将其中一种类型的识别器添加到单元格中。

以上是关于从 Tap Gesture 中获取特定的集合视图单元格的主要内容,如果未能解决你的问题,请参考以下文章

IB Tap Gesture Recognizer 总是从 Outlet Collection 返回第一个视图

Swiftui 如何在 foreach 循环中对整行使用 Tap Gesture

PanGesture 和 Tap Gesture 之间的冲突

如何在 Xamarin.Forms 中使用 Tap Gesture 调用另一个页面?

当 UITextField 位于 UIScrollView 内时,使用 Tap Gesture 关闭键盘的问题。

如果它连接的 UIImageView 在 UIScrollView 下,是不是可以让 Tap Gesture Recognizer 工作?