import SwiftUI import VisionKit import UIKit #if canImport(VisionKit) && os(iOS) /// VisionKit 文档扫描器的 SwiftUI 包装。 /// - 真机:全屏多页文档扫描,自动透视校正 /// - 模拟器:`VNDocumentCameraViewController.isSupported == false`, /// 父 View 不要 present 这个,改走 PhotosPicker 回退(见 PhotoPickerSheet) struct DocumentScannerView: UIViewControllerRepresentable { let onFinish: ([UIImage]) -> Void let onCancel: () -> Void func makeUIViewController(context: Context) -> VNDocumentCameraViewController { let vc = VNDocumentCameraViewController() vc.delegate = context.coordinator return vc } func updateUIViewController(_ uiViewController: VNDocumentCameraViewController, context: Context) {} func makeCoordinator() -> Coordinator { Coordinator(onFinish: onFinish, onCancel: onCancel) } final class Coordinator: NSObject, VNDocumentCameraViewControllerDelegate { let onFinish: ([UIImage]) -> Void let onCancel: () -> Void init(onFinish: @escaping ([UIImage]) -> Void, onCancel: @escaping () -> Void) { self.onFinish = onFinish self.onCancel = onCancel } func documentCameraViewController( _ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan ) { var images: [UIImage] = [] for i in 0..