TransformGesture icon indicating copy to clipboard operation
TransformGesture copied to clipboard

Issue with Drawing on PencilKit Canvas After Applying transformGesture and transformEffect

Open rk-helper opened this issue 8 months ago • 1 comments

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!

rk-helper avatar Jun 03 '24 13:06 rk-helper