[英]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.