使用点击手势时如何获取UICollectionView标头的索引路径?

aka*_*aru 2 objective-c ios ios6 uicollectionview

我使用locationInView获取触摸点并将其传递给集合视图的indexPathForItemAtPoint.我将得到一个单元格的索引路径,但从来没有UICollectionReusableView(页眉/页脚),因为它总是返回nil.

小智 7

标头实际上没有indexPath; 它报告为第0行,但该部分中的第一个单元格也是如此.

您可以通过创建具有Integer属性的UITapGestureRecognizer的简单子类来轻松解决此问题,只需将以下接口和空实现放在View Controller .m文件的顶部:

@interface HeaderTapRecognizer : UITapGestureRecognizer
@property (nonatomic, assign) NSInteger sectionNumber;
@end

@implementation HeaderTapRecognizer
@end
Run Code Online (Sandbox Code Playgroud)

当您提供补充视图时,只需添加其中一个识别器并设置节号:

HeaderTapRecognizer *recognizer = [[HeaderTapRecognizer alloc] initWithTarget:self action:@selector(headerTapped:)];
recognizer.sectionNumber = indexPath.section;
[cell addGestureRecognizer:recognizer];
Run Code Online (Sandbox Code Playgroud)

现在,您可以访问操作块中的节号:

- (void)headerTapped:(id)sender
{
    HeaderTapRecognizer *htr = sender;
    NSInteger sectionNumber = htr.sectionNumber;
    NSLog(@"Header tapped for index Section %d",sectionNumber);
}
Run Code Online (Sandbox Code Playgroud)