Search code examples
iosswiftswift5toolkitpencilkit

iOS PencilKit not drawing on the PKCanvasView


In iOS Simulator, I've followed the basic steps to include PencilKit into my view controller. I got the toolKit in the UI but couldn't draw.. Not sure what I'm missing here. Sharing my code which I tried.

import UIKit
import PencilKit

class DrawingBoardViewController: UIViewController {

@IBOutlet weak var canvasView: PKCanvasView!

 override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)       
        setupCanvasView()
    }

 func setupCanvasView() {
                
        let toolPicker = PKToolPicker.init()
        toolPicker.setVisible(true, forFirstResponder: canvasView)
        toolPicker.addObserver(canvasView)
        toolPicker.isRulerActive = false
        canvasView.isOpaque = true
        canvasView.becomeFirstResponder()
        canvasView.drawingPolicy = .anyInput
        
    }
}

Kindly let me know what I'm missing here..


Solution

  • This should fix your issue:

    import UIKit
    import PencilKit
    
    class DrawingBoardViewController: UIViewController {
    
    @IBOutlet weak var canvasView: PKCanvasView!
    
    let toolPicker = PKToolPicker.init()
    
     override func viewDidAppear(_ animated: Bool) {
            super.viewDidAppear(animated)       
            setupCanvasView()
        }
    
     func setupCanvasView() {
                    
            toolPicker.setVisible(true, forFirstResponder: canvasView)
            toolPicker.addObserver(canvasView)
            toolPicker.isRulerActive = false
            canvasView.isOpaque = true
            canvasView.becomeFirstResponder()
            canvasView.drawingPolicy = .anyInput
            
        }
    }