Fix crash: check availableMetadataObjectTypes before setting QR type

This commit is contained in:
yumoqing 2026-06-24 19:22:13 +08:00
parent 32bf49fa0d
commit 8236b586c5

View File

@ -122,7 +122,15 @@ class QRScannerWindowController: NSObject, AVCaptureMetadataOutputObjectsDelegat
if session.canAddOutput(output) { if session.canAddOutput(output) {
session.addOutput(output) session.addOutput(output)
output.setMetadataObjectsDelegate(self, queue: .main) output.setMetadataObjectsDelegate(self, queue: .main)
output.metadataObjectTypes = [.qr] // QR
if output.availableMetadataObjectTypes.contains(.qr) {
output.metadataObjectTypes = [.qr]
} else {
DispatchQueue.main.async { [weak self] in
self?.showError("Camera does not support QR code scanning")
}
return
}
} }
let previewLayer = AVCaptureVideoPreviewLayer(session: session) let previewLayer = AVCaptureVideoPreviewLayer(session: session)