簡體   English   中英

將手勢識別器添加到PaintCode創建的BezierPath中

[英]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) {

    ....

}

我還覆蓋了UIViewsomeObjectView.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM