swift - 如何在没有 PKToolPicker 的情况下使用 PKCanvasView 功能?

标签 swift swiftui pkcanvasview pktoolpicker

我想在没有 PKToolPicker 的情况下使用 PKCanvasView 功能。 一旦我将 PKToolPicker 可见性设置为 false,PKCanvasView 就会绘制注释。

如何隐藏PKToolPicker并使用PKCanvasView

这是我正在使用的代码:

struct DrawingView: View {
    private var canvasView = PKCanvasView()

    var body: some View {
        MyCanvas(canvasView: canvasView)
    }
}

struct MyCanvas: UIViewRepresentable {
    var canvasView: PKCanvasView
    let picker = PKToolPicker.init()

    func makeUIView(context: Context) -> PKCanvasView {
        self.canvasView.tool = PKInkingTool(.marker, color: .black, width: 1)
        self.canvasView.becomeFirstResponder()
        return canvasView
    }

    func updateUIView(_ uiView: PKCanvasView, context: Context) {
        picker.addObserver(canvasView)
        picker.setVisible(true, forFirstResponder: uiView)
        DispatchQueue.main.async {
            uiView.becomeFirstResponder()
        }
    }
}

enter image description here

最佳答案

如果您不使用PKToolPicker,则必须指定绘图策略。

类似这样的事情:

func makeUIView(context: Context) -> PKCanvasView {
    self.canvasView.tool = PKInkingTool(.marker, color: .black, width: 1)
    self.canvasView.drawingPolicy = .anyInput // Specify the drawing policy
    self.canvasView.becomeFirstResponder()
    return canvasView
}

关于swift - 如何在没有 PKToolPicker 的情况下使用 PKCanvasView 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73798555/

相关文章:

ios - PHPickerViewController 点击搜索得到错误... "Unable to load photos"

ios - 构建错误预览第一个 SwiftUI View

ios - SwiftUI:打开带有动态内容的模式表仅在第一次尝试时失败

ios - 如何格式化字符串左对齐

arrays - 快速使用外部数据库值填充 TableView

swift - NSKeyValueObservation observe() 闭包中是否需要弱 self ?

class - Swift的实例方法和类型方法的区别