2

environment ・MacOS: 10.15.7 ・Xcode: 12.1 ・iOS: 14.1

I am trying to PencilKit and but I cannot show PKToolPicker. I set my code as below:

enter image description here

if let window = UIApplication.shared.windows.first {
    if let toolPicker = PKToolPicker.shared(for: window) {
        toolPicker.addObserver(canvas)
        toolPicker.setVisible(true, forFirstResponder: canvas)
        canvas.becomeFirstResponder()
    }
}

I get a warning here:

'shared(for:)' was deprecated in iOS 14.0: Create individual instances instead.

So I changed it like this

let toolPicker = PKToolPicker.init()
toolPicker.addObserver(canvas)
toolPicker.setVisible(true, forFirstResponder: canvas)
canvas.becomeFirstResponder()

enter image description here

After all the PKToolPicker is not displayed

enter image description here

I am aiming to display such PKToolPicker

Please give me advice

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129

2 Answers2

1

First declare an individual instance of the toolPicker for the ViewController at the class level. This is required to be able to change pens in the toolPicker:

let toolPicker = PKToolPicker()

Then later, in viewWillAppear(_ :)

toolPicker.addObserver(canvas)
toolPicker.setVisible(true, forFirstResponder: canvas)
canvas.becomeFirstResponder()
manicaesar
  • 5,024
  • 3
  • 26
  • 29
vmanjz
  • 1,156
  • 1
  • 10
  • 23
0

I solved it like this

toolPicker.addObserver(canvas)
toolPicker.setVisible(true, forFirstResponder: canvas)
canvas.becomeFirstResponder()
  • 1
    couldn't see any difference between ur old code and new code. !! Can you please elaborate clearly so that it will be easy for others to understand. – Dayanithi Natarajan Jul 24 '21 at 04:44
  • @DayaKevin Add an individual instance of the toolPicker to the ViewController: ** let toolPicker = PKToolPicker.init() ** – vmanjz Aug 10 '21 at 04:53
  • @vmanjz As per the guidelines, I've added individual instance of the tool picker. Still no luck. Please find my code on this link https://stackoverflow.com/questions/68501442/ios-pencilkit-not-drawing-on-the-pkcanvasview – Dayanithi Natarajan Aug 10 '21 at 04:56
  • @DayaKevin Instead of declaring a constant toolPicker in the function, declare it just below the IBOutlet near the top! Cheers! – vmanjz Aug 10 '21 at 04:59