我有一個集合視圖單元格,其中的標籤在單元格的邊界之外延伸。單元格不剪裁標籤。我希望didSelectItemAtIndexPath檢測一個選擇,如果用戶敲擊超出單元格邊界的標籤部分。我怎樣才能做到這一點?實現這一如何將UICollectionViewCell的可觸摸區域擴大到其界限以外?
2
A
回答
2
子視圖的可觸摸性通常不會超出超視圖的界限。因此,您需要爲集合視圖單元類進行命中測試,以便即使觸摸位於單元格邊界之外,其子視圖也可以觸摸。
在我的書中,我舉一個example(你可以下載並試用你的機器上),其工作原理是這樣:
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
if let result = super.hitTest(point, withEvent:event) {
return result
}
for sub in self.subviews.reverse() as [UIView] {
let pt = self.convertPoint(point, toView:sub)
if let result = sub.hitTest(pt, withEvent:event) {
return result
}
}
return nil
}
您可能需要適應的是有點,但是,因爲它可能是該標籤不是該單元的直接子視圖(如該示例代碼中所假定的)。但是,它確實顯示了這個想法。
0
一種方式是繼承UICollectionViewCell
,並覆蓋pointInside(_:withEvent:)
返回true
如果該點是細胞的標籤內:
override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
let pointInLabelCoords = convertPoint(point, toView: label)
if label.pointInside(pointInLabelCoords, withEvent: event) {
return true
}
return super.pointInside(point, withEvent: event)
}
或者,如果你需要一個更強大的解決方案,可用於在任何OUT-觸摸只要列舉contentView.subviews
並詢問每個視圖是否在該點內。
請記住,只有當單元格(包括其可觸摸的超出邊界子視圖)完全包含在單元格的超視圖中時,此方法纔有效。這是因爲當系統查找視圖以響應觸摸時(見hitTest(_:withEvent:)
),視圖層次被遍歷。如果可觸摸區域位於單元格的超視圖範圍之外,則還需要覆蓋上的pointInside(_:withEvent:)
,即視圖(集合視圖)。
相關問題
- 1. 如何擴展按鈕觸摸區域?
- 2. UISwitch:使觸摸區域大於默認觸摸區域
- 3. UIButton的可觸摸區域
- 4. 自定義組件可以擴展到其容器的界限以外 - 如何?
- 5. gridster:您可以將小部件的可觸摸區域限制到特定區域嗎?
- 6. 如何限制觸摸事件到特定區域或UIView?
- 7. 獲取觸摸點與最大的區域被觸摸 - Android
- 8. box2d:更大的可點擊/可觸摸區域
- 9. 如何將imageButton可觸摸區域更改爲cyrcle?
- 10. 如何擴展視圖的觸摸區域
- 11. 如何在iPad中擴展HTML5中的按鈕觸摸區域?
- 12. iphone - 如何擴展按鈕的觸摸區域?
- 13. 限制在iPhone中的UIButton的可觸摸區域?
- 14. 設置SKSpriteNode的可觸摸區域
- 15. 最大。進程數量可以在其臨界區域
- 16. 限制UIButton的觸摸到指定區域
- 17. 如何在android中檢測開放區域的觸摸區域?
- 18. 從右到左可可觸摸界面
- 19. iOS定義了一個對象的可觸摸區域,將觸摸侷限在自我的子視圖上
- 20. kml邊界以外的陰影區域
- 21. 獲取觸摸區域
- 22. iPhone - 觸摸區域檢測
- 23. 觸摸區域控制
- 24. Cocos2d按鈕觸摸區域
- 25. Android ChatHead僅限於觸摸本身,但我需要第二個手指同時觸摸第二個觸摸區域外的區域,
- 26. android - 如何定義一個圓圈內的可觸摸區域
- 27. 我如何製作一個自定義的可觸摸區域?
- 28. UICollectionViewCell沒有檢測到觸摸
- 29. 如何擴大UIGestureRecognizer的命中區域?
- 30. 限制我的觸摸區域的一部分UIImageVIew
有關這裏涉及的理論和實踐,請參閱我的書的早期版本:http://www.apeth.com/iOSBook/ch18.html#_hit_testing – matt 2015-04-04 21:59:42