There a PKCanvasView setup like this:
struct CanvasView {
@Binding var canvasView: PKCanvasView
let onSaved: () -> Void
@State var toolPicker = PKToolPicker()
}
extension CanvasView: UIViewRepresentable {
func makeUIView(context: Context) -> PKCanvasView {
canvasView.tool = PKInkingTool(.pencil, color: .gray, width: 20)
// #if targetEnvironment(simulator)
canvasView.drawingPolicy = .anyInput
// #endif
canvasView.delegate = context.coordinator
showToolPicker()
return canvasView
}
func updateUIView(_ uiView: PKCanvasView, context: Context) {}
func makeCoordinator() -> Coordinator {
Coordinator(canvasView: $canvasView, onSaved: onSaved)
}
}
And then I use it in SwiftUI Like this:
VStack {
Spacer()
CanvasView(canvasView: $canvasView, onSaved: saveDrawing)
.aspectRatio(1.0, contentMode: .fit)
Spacer()
}
But the second I put it in the ScrollView to add the pan and zoom ability like this
ScrollView { //prevents drawing with finger
VStack {
Spacer()
CanvasView(canvasView: $canvasView, onSaved: saveDrawing)
.aspectRatio(1.0, contentMode: .fit)
Spacer()
}
}
It stops allowing me to draw with finger, presuming that it's trying to scroll instead. I'm looking for a behaviour like the Apple's freeform app. Finger to draw and pinch to zoom, 2 fingers to pan.