我正试图用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")
}
}发布于 2022-11-08 19:59:00
这里的问题是,您要在函数中创建一个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")
}
}https://stackoverflow.com/questions/74059164
复制相似问题