Files
Gas-Tank-AR-App/GasTankAR/Views/Leads/Signing/LeadSignatureCanvas.swift

45 lines
1.6 KiB
Swift

import SwiftUI
import PencilKit
struct LeadSignatureCanvas: UIViewRepresentable {
@Binding var drawing: PKDrawing
@Environment(\.colorScheme) private var colorScheme
func makeUIView(context: Context) -> PKCanvasView {
let view = PKCanvasView()
view.delegate = context.coordinator
view.drawingPolicy = .anyInput
// PencilKit renders black ink as white in Dark Mode, including existing strokes.
// Keep the stored ink black; the PDF service exports onto a white document.
view.tool = PKInkingTool(.pen, color: .black, width: 2)
view.overrideUserInterfaceStyle = colorScheme == .dark ? .dark : .light
view.backgroundColor = .clear
view.isOpaque = false
view.isScrollEnabled = false
view.drawing = drawing
view.accessibilityLabel = "Unterschrift"
view.accessibilityHint = "Mit Finger oder Apple Pencil unterschreiben"
return view
}
func updateUIView(_ view: PKCanvasView, context: Context) {
context.coordinator.parent = self
view.overrideUserInterfaceStyle = colorScheme == .dark ? .dark : .light
if view.drawing != drawing {
view.drawing = drawing
}
}
func makeCoordinator() -> Coordinator { Coordinator(parent: self) }
final class Coordinator: NSObject, PKCanvasViewDelegate {
var parent: LeadSignatureCanvas
init(parent: LeadSignatureCanvas) { self.parent = parent }
func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
parent.drawing = canvasView.drawing
}
}
}