Skip to content

Commit 0af227c

Browse files
author
Nathan Fallet
authored
Merge pull request #129 from qalandarov/main
2 parents e1943d7 + 4c28fd3 commit 0af227c

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

Sources/CodeScanner/CodeScanner.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public struct CodeScannerView: UIViewControllerRepresentable {
6969
public let manualSelect: Bool
7070
public let scanInterval: Double
7171
public let showViewfinder: Bool
72+
public let requirePhotoOutput: Bool
7273
public var simulatedData = ""
7374
public var shouldVibrateOnSuccess: Bool
7475
public var isTorchOn: Bool
@@ -82,6 +83,7 @@ public struct CodeScannerView: UIViewControllerRepresentable {
8283
manualSelect: Bool = false,
8384
scanInterval: Double = 2.0,
8485
showViewfinder: Bool = false,
86+
requirePhotoOutput: Bool = true,
8587
simulatedData: String = "",
8688
shouldVibrateOnSuccess: Bool = true,
8789
isTorchOn: Bool = false,
@@ -93,6 +95,7 @@ public struct CodeScannerView: UIViewControllerRepresentable {
9395
self.scanMode = scanMode
9496
self.manualSelect = manualSelect
9597
self.showViewfinder = showViewfinder
98+
self.requirePhotoOutput = requirePhotoOutput
9699
self.scanInterval = scanInterval
97100
self.simulatedData = simulatedData
98101
self.shouldVibrateOnSuccess = shouldVibrateOnSuccess

Sources/CodeScanner/ScannerViewController.swift

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ extension CodeScannerView {
1515
public class ScannerViewController: UIViewController, UINavigationControllerDelegate {
1616
private let photoOutput = AVCapturePhotoOutput()
1717
private var isCapturing = false
18-
private var handler: ((UIImage) -> Void)?
18+
private var handler: ((UIImage?) -> Void)?
1919
var parentView: CodeScannerView!
2020
var codesFound = Set<String>()
2121
var didFinishScanning = false
@@ -438,12 +438,7 @@ extension CodeScannerView.ScannerViewController: AVCaptureMetadataOutputObjectsD
438438
if let metadataObject = metadataObjects.first {
439439
guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return }
440440
guard let stringValue = readableObject.stringValue else { return }
441-
442-
guard didFinishScanning == false else { return }
443-
444-
let photoSettings = AVCapturePhotoSettings()
445-
guard !isCapturing else { return }
446-
isCapturing = true
441+
guard !didFinishScanning && !isCapturing else { return }
447442

448443
handler = { [self] image in
449444
let result = ScanResult(string: stringValue, type: readableObject.type, image: image, corners: readableObject.corners)
@@ -472,7 +467,13 @@ extension CodeScannerView.ScannerViewController: AVCaptureMetadataOutputObjectsD
472467
}
473468
}
474469
}
475-
photoOutput.capturePhoto(with: photoSettings, delegate: self)
470+
471+
if parentView.requirePhotoOutput {
472+
isCapturing = true
473+
photoOutput.capturePhoto(with: AVCapturePhotoSettings(), delegate: self)
474+
} else {
475+
handler?(nil)
476+
}
476477
}
477478
}
478479
}

0 commit comments

Comments
 (0)