我無法在使用UIBezierpath繪製的線中找到觸摸點。 CGPathContainPoint不適用於線路。請幫助我在一行中檢測觸摸點
回答
您可以創建另一個路徑對象,表示路徑實際在屏幕上的顯示方式,然後檢查觸摸點是否位於該路徑內。在CGPath reference中,您可以找到方便的構造函數CGPathCreateCopyByStrokingPath
。你可能會有點像這樣使用:
CGPathRef originalPath = myBezierPath.CGPath; //The single-line path
//Use the values you use to draw the path onscreen,
//or use a width representing how far the user can touch
//for it to be recognized by the path.
//For example, for an error tolerance of 4px, use a width of 8px.
CGPathRef strokedPath = CGPathCreateCopyByStrokingPath(originalPath, NULL, lineWidth, lineCap, lineJoin, miterLimit);
BOOL pathContainsPoint = CGPathContainsPoint(strokedPath, NULL, touchPoint, NO);
如上圖所示,這給你指定區域的利益,爲用戶而不是觸摸線。
希望這會有所幫助!
我想從一組特定的行形狀 – Shruthi
有什麼問題?這段代碼只是確定一個點是否與一條路徑相交。要從一組路徑中選擇一行,只需循環遍歷路徑併爲其中的每個路徑運行此代碼即可。 – architectpianist
@architectpianist,如果我可以給這10個upvotes我會。我一直在尋找一種方法來檢測一個點落在一條線上,這個解決方案完美地工作。謝謝 – sbru
- 1. 多點觸摸檢測
- 2. UITapGestureRecognizer檢測單點觸摸
- 3. 在MPVolumeView中檢測觸摸
- 4. 在UISearchBar中檢測觸摸
- 5. 在觸摸點檢測控件/視圖
- 6. 檢測觸摸哪一側觸摸在iphone中的openGLES 3dbox
- 7. 觸摸不檢測?
- 8. 檢測觸摸UIButton
- 9. android檢測觸摸
- 10. 檢測CAShapeLayer觸摸
- 11. UINavigationItem:檢測觸摸
- 12. android檢測觸摸
- 13. 在webview上檢測觸摸
- 14. 在CCSprite上檢測觸摸
- 15. 在UIView上檢測觸摸
- 16. 在NSOpenGLView上檢測觸摸
- 17. 觸摸後如何檢測觸摸
- 18. 如何檢測onTouchEvent()中的單點觸摸以及多點觸摸()
- 19. 如何檢測多點觸摸事件?
- 20. CCTMXTiledMap觸摸檢測有點關閉
- 21. AndroidPlot:檢測點上的觸摸事件
- 22. TYPE_SYSTEM_OVERLAY在ICS中檢測觸摸
- 23. 檢測在陣列中的SKNode觸摸
- 24. 在UIBarButtonItem中檢測觸摸或按下
- 25. 在HUDLayer和GameLayer中檢測觸摸
- 26. 在圖像視圖中檢測觸摸
- 27. 在子視圖中觸摸檢測
- 28. 使用觸摸事件在imageView中進行連續觸摸檢測..?
- 29. 使用UIButton進行觸摸檢測
- 30. iOS一次檢測到多個觸摸
http://stackoverflow.com/questions/10831370/how-to-check-if-touch-point-is-on-uibezierpath-ios可以通過這個鏈接 – Jitendra