[英]Add gesture recognizer to BezierPath created by PaintCode
我不知道以下情況:
我已經從PaintCode導出了一個NSObject
並制作了一個.swift文件( someObject.swift )。
public class PlanATrip: NSObject {
class func drawRectangle1(frame targetFrame: CGRect = CGRect(x: 0, y: 0, width: 200, height:100), resizing: ResizingBehavior = .aspectFit) {
....
}
我還覆蓋了UIView
( someObjectView.swift )中的draw()
函數。
那么,怎樣才能添加一個手勢識別的bezierPath(例如, rectangle1 = UIBezierPath(...)
這是在someObject.swift?
我試圖添加一些功能,例如:
let tapGestureA:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(touchAction))
但是,范圍使我感到困惑。 就像我將touchAction函數從drawRectangle1
函數中移出一樣,我將無法訪問rectangle1
。
如何進行修改以使此類手勢識別器起作用?
如果我正確理解了您的問題,則您想添加一個UITapGestureRecognizer,它可以識別UIBezierPath定義的視圖部分中的手勢。
在這種情況下,將問題中的選擇器分配給手勢識別器,然后在touchAction(recognizer :)的正文中測試手勢是否位於UIBezierPath中。 您只關心手勢是否在UIBezierPath內部的簡單情況可以按以下方式處理:
func touchAction(recognizer: UITapGestureRecognizer) -> Void {
guard rectangle1.contains(recognizer.location(in: self)) else { return }
// Execute your code for the gesture here
// ...
}
您正在嘗試直接操作UIBezierPath
生成的UIBezierPath
對象,這不是PaintCode的目的。
您試圖實現的目標是可能的,但並非沒有黑客。
例如: 如何訪問用Paintcode生成的UIView自定義類中的圖層?
我認為您在“濫用” PaintCode。
相反,您最好在自定義UIView
添加點擊邏輯。 您將其稱為someObjectView.swift
。
例如: https : //github.com/backslash-f/paint-code-ui-button
如果確實需要檢查手勢是否在UIBezierPath
的邊界內發生,則需要創建對其的公共引用(例如:在drawRectangle1
函數外部指向它的var
),最后使用@Sparky建議的代碼。
這種方法的主要問題是,每次使用PaintCode的導出功能時,所做的更改都會被覆蓋 。 我不推薦它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.