我使用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