繁体   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