我不知道以下情况:
我从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) {
....
}
我还覆盖了draw()
( someObjectView.swift )中的UIView
函数。
那么如何将手势识别器添加到 someObject.swift 中的bezierPath(例如,rectangle1 = UIBezierPath(...)
)?
我尝试添加一些功能,如:
let tapGestureA:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(touchAction))
然而,范围使我困惑;就像我将touchAction函数放在drawRectangle1
函数之外一样,我将无法访问rectangle1
。
如何修改以使这样的手势识别器工作?
答案 0 :(得分:0)
如果我正确理解您的问题,您需要添加一个UITapGestureRecognizer,它会识别由UIBezierPath定义的视图的一部分中的手势。
在这种情况下,将选择器分配给问题中的手势识别器,然后在touchAction(识别器:)的主体中,测试手势是否位于UIBezierPath内。您只关心手势是否位于UIBezierPath内的简单情况可能会按如下方式处理:
func touchAction(recognizer: UITapGestureRecognizer) -> Void {
guard rectangle1.contains(recognizer.location(in: self)) else { return }
// Execute your code for the gesture here
// ...
}
答案 1 :(得分:0)
您正试图直接操纵PaintCode生成的UIBezierPath
个对象,这不是PaintCode的目的。
你想要实现的目标是可能的,但并非没有一些黑客攻击 例如:How to access a layer inside UIView custom class generate with Paintcode?
在我看来,你是"滥用" PaintCode。
相反,您可以更好地在自定义UIView
中添加点按逻辑。你称之为someObjectView.swift
的事
例如:https://github.com/backslash-f/paint-code-ui-button
如果您确实需要检查手势是否发生在UIBezierPath
的边界内,那么您需要创建一个公开引用(例如:var
指向{ {1}}函数)最后使用@Sparky提出的代码。
这种方法的主要问题是,每次使用PaintCode的导出功能时,您的更改都会被覆盖。我不推荐它。