我使用locationInView获取触摸点并将其传递给集合视图的indexPathForItemAtPoint。我将得到一个单元格的索引路径,但从来没有UICollectionReusableView(header/footer),因为它总是返回nil。如何在使用轻击手势时获取UICollectionView标题的索引路径?
2
A
回答
1
可能来不及帮助这个,但也许别人会像我一样打这个。问题是头没有有意义的indexPath(它总是返回0,0)。
无论如何,当我得到的点,而不是我检查,看它是否是子视图中的标头中的indexPath:
CGPoint point = [sender locationInView:collectionView];
if (CGRectContainsPoint(CGRectMake(0.0f,0.0f,140.0f,140.0f), point))
NSLog(@"Point was inside header");
此作品在我的情况下,只是因为我知道大小并且可以安全地假定它在collectionview中的位置,因为collectionView只有一个部分(0)。
HTH
1
我会创建并附加UITapGestureRecognizer
到每个标题视图。另一种选择是为每个标题视图提供UIControl
的自定义子类。
7
头部并没有真正的indexPath;它报告为第0行,但该部分中的第一个单元格也是如此。
您可以通过UITapGestureRecognizer的简单子类,具有整数属性轻松解决这个问题,只要把下面的接口和空的实现在视图控制器的.m
文件的顶部:
@interface HeaderTapRecognizer : UITapGestureRecognizer
@property (nonatomic, assign) NSInteger sectionNumber;
@end
@implementation HeaderTapRecognizer
@end
当你提供补充视图,只需添加这些识别器之一,并设置部分号码:
HeaderTapRecognizer *recognizer = [[HeaderTapRecognizer alloc] initWithTarget:self action:@selector(headerTapped:)];
recognizer.sectionNumber = indexPath.section;
[cell addGestureRecognizer:recognizer];
现在你可以在行动块存取款号:
- (void)headerTapped:(id)sender
{
HeaderTapRecognizer *htr = sender;
NSInteger sectionNumber = htr.sectionNumber;
NSLog(@"Header tapped for index Section %d",sectionNumber);
}
+0
我完全不理解这一点。无论如何,你在哪里获得indexPath? – p0lAris 2015-06-06 19:19:54
相关问题
- 1. 获取标签或索引的轻击手势识别器
- 2. 如何获取UICollectionView标头的索引路径?
- 3. 如何从UICollectionView中的索引路径正确获取索引?
- 4. UICollectionView prepareForSegue以手势轻击UIImageView
- 5. 在滑动手势上获取单元格索引路径UITableView
- 6. 如何在使用MPMoviePlayerController时识别轻击手势
- 7. UIPopoverPresentationController不会在标题视图上禁用轻击手势
- 8. 获取UiTableView标头的索引路径?
- 9. UICollectionView:获取不可见的单元格的索引路径
- 10. 如何在单击标题时获取列名/索引
- 11. iOS - 忽略轻击手势
- 12. CKComponent处理轻击手势
- 13. 如何选择轻击手势而不是画手势?
- 14. tvOS UICollectionView获取当前焦点物品的索引路径
- 15. uitableview标题中的单独的轻击手势识别器
- 16. 保存在ActionSheet中使用的UICollectionView的索引路径
- 17. 如何使用jq获取找到的值的索引路径?
- 18. 获取部分标题视图的索引路径
- 19. 从UISearchDisplayController获取self.tableview索引路径tableView索引路径
- 20. 如何检测轻扫/轻拂手势?
- 21. UICollectionView无效索引路径崩溃
- 22. 在UICollectionView数据源中使用深索引路径
- 23. Swift iOS。我如何获得索引路径的单元格在UICollectionView
- 24. UICollectionView手势事件
- 25. 如何手动获取获取(...)索引
- 26. 获取UITablieViewCell的索引路径
- 27. 获取表格的索引路径
- 28. 如何获取请求引用路径?
- 29. 如何在子视图中检测轻击手势
- 30. 如何通过用户轻敲手势获取标签的标签在目标c中
我已经完成了轻拍手势识别器,但在集合视图中使用单个实例,而不是每个头的一个,因为这样效率更高。我真的只是在寻找如何基于一个点来获取标题的索引路径。 – akaru 2013-02-17 18:02:04
我不认为有多个水龙头识别器会成为一个问题,但在这种情况下,您可以使用自定义标题视图...如果您的问题真的是“如何获得标题视图中的水龙头的索引路径一个集合视图“你应该问:) – nielsbot 2013-02-18 06:55:08
我问这种方式给更多的上下文,以防在使用轻击手势时indexPathForItemAtPoint中存在一些错误或问题。是的,真正的问题可能是“如何获得集合视图中标题视图上的点击索引路径?”。 – akaru 2013-02-18 17:09:04