Swift PKToolPickerObserver「指で描画」は検出出来るのか?

「指で描画」スイッチの検出目的で調査したが、「指で描画」は検出出来ない。

コード

import UIKit
import PencilKit

class PencilKitViewController: UIViewController {
    var pkcanvasview: PKCanvasView = PKCanvasView(frame: .zero)
    let pktoolpicker = PKToolPicker()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.addSubview(self.pkcanvasview)

        self.pkcanvasview.isOpaque = false
        self.pkcanvasview.backgroundColor = .clear
        self.pktoolpicker.addObserver(self.pkcanvasview)
        self.pktoolpicker.addObserver(self)
        self.pktoolpicker.setVisible(true, forFirstResponder: self.pkcanvasview)
        self.pkcanvasview.becomeFirstResponder()
        self.view = self.pkcanvasview
    }
    
    override func viewDidAppear(_ animated: Bool) {
        print("width:\(self.view.frame.width) height:\(self.view.frame.height) zoomScale:\(self.pkcanvasview.zoomScale)")
    }
}

extension PencilKitViewController: PKToolPickerObserver {
    func toolPickerSelectedToolDidChange(_ toolPicker: PKToolPicker) {
        print("***** \(#function)")
    }
    
    func toolPickerIsRulerActiveDidChange(_ toolPicker: PKToolPicker) {
        print("***** \(#function)")
    }
    
    func toolPickerVisibilityDidChange(_ toolPicker: PKToolPicker) {
        print("***** \(#function)")
    }
    
    func toolPickerFramesObscuredDidChange(_ toolPicker: PKToolPicker) {
        print("***** \(#function)")
    }
}

実行結果

生成、表示
***** toolPickerSelectedToolDidChange(_:)
***** toolPickerVisibilityDidChange(_:)

ペン種類・色変更
***** toolPickerSelectedToolDidChange(_:)

ルーラー表示・非表示
***** toolPickerIsRulerActiveDidChange(_:)

SwiftSwift,SwiftUI

Posted by shi-n