Skip to content

Commit 11dd17b

Browse files
committed
Ability to pause scanning (i.e. when presenting)
1 parent 9302aa1 commit 11dd17b

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

Sources/CodeScanner/CodeScanner.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ public struct CodeScannerView: UIViewControllerRepresentable {
8585
public var simulatedData = ""
8686
public var shouldVibrateOnSuccess: Bool
8787
public var isTorchOn: Bool
88+
public var isPaused: Bool
8889
public var isGalleryPresented: Binding<Bool>
8990
public var videoCaptureDevice: AVCaptureDevice?
9091
public var completion: (Result<ScanResult, ScanError>) -> Void
@@ -99,6 +100,7 @@ public struct CodeScannerView: UIViewControllerRepresentable {
99100
simulatedData: String = "",
100101
shouldVibrateOnSuccess: Bool = true,
101102
isTorchOn: Bool = false,
103+
isPaused: Bool = false,
102104
isGalleryPresented: Binding<Bool> = .constant(false),
103105
videoCaptureDevice: AVCaptureDevice? = AVCaptureDevice.bestForVideo,
104106
completion: @escaping (Result<ScanResult, ScanError>) -> Void
@@ -112,6 +114,7 @@ public struct CodeScannerView: UIViewControllerRepresentable {
112114
self.simulatedData = simulatedData
113115
self.shouldVibrateOnSuccess = shouldVibrateOnSuccess
114116
self.isTorchOn = isTorchOn
117+
self.isPaused = isPaused
115118
self.isGalleryPresented = isGalleryPresented
116119
self.videoCaptureDevice = videoCaptureDevice
117120
self.completion = completion

Sources/CodeScanner/ScannerViewController.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -436,9 +436,12 @@ extension CodeScannerView {
436436
extension CodeScannerView.ScannerViewController: AVCaptureMetadataOutputObjectsDelegate {
437437
public func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
438438
if let metadataObject = metadataObjects.first {
439-
guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return }
440-
guard let stringValue = readableObject.stringValue else { return }
441-
guard !didFinishScanning && !isCapturing else { return }
439+
guard !parentView.isPaused && !didFinishScanning && !isCapturing,
440+
let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject,
441+
let stringValue = readableObject.stringValue
442+
else {
443+
return
444+
}
442445

443446
handler = { [self] image in
444447
let result = ScanResult(string: stringValue, type: readableObject.type, image: image, corners: readableObject.corners)

0 commit comments

Comments
 (0)