gadirom / TransformGesture

Handle two finger transformation gesture in SwiftUI and Metal views
29 stars 1 forks source link

Issue with Drawing on PencilKit Canvas After Applying transformGesture and transformEffect #7

Open rk-helper opened 5 months ago

rk-helper commented 5 months ago

Hi,

I’m experiencing an issue when using the TransformGesture package with a PencilKit canvas in SwiftUI. My goal is to allow for complex gestures (pinching, rotating, and dragging) while still being able to draw on the canvas. However, after applying the transformGesture and transformEffect modifiers, I’m unable to draw on the PencilKit canvas.

Here is a snippet of my code:

struct ContentView: View {
    @StateObject private var transform = TouchTransform()
    @State private var canvasView = PKCanvasView()

    var body: some View {
        VStack {
            PencilKitCanvasView(canvasView: $canvasView)
                .transformEffect(transform)
                .transformGesture(transform: transform,
                                  draggingDisabled: false,
                                  active: true)
                .edgesIgnoringSafeArea(.all)
        }
    }
}

struct PencilKitCanvasView: UIViewRepresentable {
    @Binding var canvasView: PKCanvasView

    func makeUIView(context: Context) -> PKCanvasView {
        canvasView.drawingPolicy = .anyInput
        return canvasView
    }

    func updateUIView(_ uiView: PKCanvasView, context: Context) {
        // Update the view if needed
    }
}

With this setup, the gestures work fine, but I can no longer draw on the canvas. It seems like the gesture handling might be interfering with the drawing capability of PencilKit.

Questions:

1.  Is there a way to use TransformGesture with PencilKit so that both gesture recognition and drawing functionality can coexist?
2.  Are there specific configurations or additional steps required to achieve this?

Any help or suggestions would be greatly appreciated.

Thank you!

bobby-kim-km commented 2 months ago

Is it resolved?