PKCanvasView: Apple Pencil interrupts an active finger drawing with .anyInput

I’m testing simultaneous finger and Apple Pencil input with PencilKit and have reduced the behaviour to a minimal PKCanvasView.

import SwiftUI

struct ContentView: View {
    var body: some View {
        PencilCanvas()
            .ignoresSafeArea()
    }
}

struct PencilCanvas: UIViewRepresentable {
    func makeUIView(context: Context) -> PKCanvasView {
        let canvas = PKCanvasView()
        canvas.drawingPolicy = .anyInput
        return canvas
    }

    func updateUIView(_ canvas: PKCanvasView, context: Context) {}
}

On a physical iPad with Apple Pencil, I consistently see this behaviour:

  1. Start drawing with a finger and keep the finger moving.
  2. Touch the canvas with Apple Pencil.
  3. The active finger stroke immediately stops, while the Pencil can draw.

The reverse order behaves differently:

  1. Start drawing with Apple Pencil and keep it moving.
  2. Touch/draw with a finger.
  3. The Pencil stroke continues rather than being cancelled.

I’ve also confirmed that a newly created PKCanvasView reports isMultipleTouchEnabled == true, and explicitly setting it to true does not change the behaviour.

Is simultaneous independent Apple Pencil and finger drawing supported by PKCanvasView when using .drawingPolicy = .anyInput?

If so, is there a supported configuration or gesture-recognizer setting required to prevent the Pencil from cancelling an active finger stroke?

Or is Pencil taking priority over an active finger drawing gesture expected behaviour in PencilKit?

Update after further debugging:

I instrumented the minimal PKCanvasView test to inspect both PKDrawingGestureRecognizer and the raw UITouch events. This appears to confirm that PencilKit is actively ending the finger input when Apple Pencil begins.

With a finger actively drawing, introducing the Pencil causes PKDrawingGestureRecognizer to report:

BEGAN | touches: 1 CHANGED | touches: 1 ENDED | touches: 2

I also subclassed PKCanvasView to log the raw touch type and phase. In a test where I started drawing with my finger, kept the finger physically on the screen, and then introduced Apple Pencil, I got:

12256.4750 | FINGER BEGAN | phase: 0 12259.1747 | FINGER ENDED | phase: 3

The FINGER ENDED occurs when the Pencil touches the screen, despite my finger remaining physically down.

A fresh PKCanvasView reports isMultipleTouchEnabled == true and drawingGestureRecognizer.cancelsTouchesInView == false, so this does not appear to be normal gesture-recognizer touch cancellation.

The behaviour is also asymmetric: if Apple Pencil is drawing first, introducing a finger does not interrupt the Pencil stroke.

Is this expected PencilKit behaviour, and is there a supported API or configuration that prevents Apple Pencil input from terminating an already-active finger stroke?

PKCanvasView: Apple Pencil interrupts an active finger drawing with .anyInput
 
 
Q