【问题标题】:How can I fix pencilKit toolbar?如何修复pencilKit工具栏?
【发布时间】:2022-11-09 03:59:00
【问题描述】:

我正在尝试使用pencilKit 为IOS 15.5 制作绘图应用程序。我可以在屏幕上绘图,但是当我想使用 toolPicker 更改工具时,它实际上并没有改变(它一直使用默认绘图) 这是我的代码

import UIKit
import PencilKit
class ViewController: UIViewController, PKCanvasViewDelegate, PKToolPickerObserver{
    @IBOutlet weak var canvasView: PKCanvasView!
    override func viewDidLoad() {
        super.viewDidLoad()
        canvasView.delegate = self
        canvasView.becomeFirstResponder()
    }
    override func viewDidAppear(_ animated:  Bool) {
        super.viewDidAppear(true)
        canvasView.drawingPolicy = .anyInput
        setUpCanvasView()
    }
    func setUpCanvasView(){
        let toolPicker = PKToolPicker.init()
        toolPicker.addObserver(canvasView)
        toolPicker.setVisible(true, forFirstResponder: canvasView)
        canvasView.becomeFirstResponder()
    }
        func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
            print("drawing")
        }
        
        func canvasViewDidEndUsingTool(_ canvasView: PKCanvasView) {
            print("End using the PK tools")
        }
        
        func canvasViewDidFinishRendering(_ canvasView: PKCanvasView) {
            print("Completed the UI Event")
        }
        
    }

【问题讨论】:

    标签: ios swift pencilkit


    【解决方案1】:

    这里的问题是,您正在函数中创建一个 PKToolPicker 实例,并且在函数结束后,该实例会从内存中释放。

    import UIKit
    import PencilKit
    
    class ViewController: UIViewController, PKCanvasViewDelegate, PKToolPickerObserver {
    
    @IBOutlet weak var canvasView: PKCanvasView!
    let toolPicker = PKToolPicker()
    
       override func viewDidLoad() {
         super.viewDidLoad()
         canvasView.delegate = self
         canvasView.becomeFirstResponder()
        }
    
        override func viewDidAppear(_ animated:  Bool) {
          super.viewDidAppear(true)
          canvasView.drawingPolicy = .anyInput
          setUpCanvasView()
        }
    
        func setUpCanvasView(){
           toolPicker.addObserver(canvasView)
           toolPicker.setVisible(true, forFirstResponder: canvasView)
           canvasView.becomeFirstResponder()
        }
    
        func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
            print("drawing")
        }
        
        func canvasViewDidEndUsingTool(_ canvasView: PKCanvasView) {
            print("End using the PK tools")
        }
        
        func canvasViewDidFinishRendering(_ canvasView: PKCanvasView) {
            print("Completed the UI Event")
        }
        
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 2023-01-17
      • 2010-09-11
      相关资源
      最近更新 更多