You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用VNDocumentCameraViewController自动扫描,仅手动触发拍摄?

实现VNDocumentCameraViewController仅手动触发扫描的方法

方法一:子类化修改内部扫描器(注意私有API审核风险)

这种方式通过KVC访问控制器内部私有属性,关闭自动文档检测功能,强制用户点击快门按钮才执行扫描:

  1. 创建自定义子类继承自VNDocumentCameraViewController:
class ManualScanCameraVC: VNDocumentCameraViewController {
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        // 获取内部文档扫描器实例
        guard let scanner = value(forKey: "_scanner") as? VNDocumentCameraScanner else { return }
        // 关闭自动检测文档功能
        scanner.setValue(false, forKey: "_automaticallyDetectsDocument")
        
        // 可选:隐藏系统自动扫描提示文本
        for subview in view.subviews {
            if let label = subview as? UILabel, label.text?.contains("扫描") ?? false {
                label.isHidden = true
            }
        }
    }
}
  1. 使用自定义子类展示相机界面:
let cameraVC = ManualScanCameraVC()
cameraVC.delegate = self
present(cameraVC, animated: true)
  1. 实现代理方法处理扫描结果:
extension YourViewController: VNDocumentCameraViewControllerDelegate {
    func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
        // 处理扫描得到的文档
        for pageIndex in 0..<scan.pageCount {
            let image = scan.imageOfPage(at: pageIndex)
            // 处理单页图片逻辑
        }
        controller.dismiss(animated: true)
    }
    
    func documentCameraViewControllerDidCancel(_ controller: VNDocumentCameraViewController) {
        controller.dismiss(animated: true)
    }
    
    func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFailWithError error: Error) {
        print("扫描失败:\(error.localizedDescription)")
        controller.dismiss(animated: true)
    }
}

方法二:完全自定义扫描界面(无审核风险)

如果担心私有API的审核问题,可基于Vision框架自行实现手动扫描逻辑:

  • 用AVCaptureSession搭建相机预览界面
  • 添加自定义快门按钮,点击时调用VNDetectRectanglesRequest检测文档边框
  • 根据检测到的边框裁剪图片,完成手动扫描流程

这种方式工作量更大,但完全符合Apple API规范,无审核风险。


内容的提问来源于stack exchange,提问作者joemiddletone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 12:01:11