@@ -60,6 +60,8 @@ open class BarcodeScannerViewController: UIViewController {
6060 private var locked = false
6161 /// Flag to check if layout constraints has been activated.
6262 private var constraintsActivated = false
63+ /// Flag to check if view controller is currently on screen
64+ private var isVisible = false
6365
6466 // MARK: - UI
6567
@@ -106,6 +108,12 @@ open class BarcodeScannerViewController: UIViewController {
106108 open override func viewWillAppear( _ animated: Bool ) {
107109 super. viewWillAppear ( animated)
108110 setupCameraConstraints ( )
111+ isVisible = true
112+ }
113+
114+ open override func viewWillDisappear( _ animated: Bool ) {
115+ super. viewWillDisappear ( animated)
116+ isVisible = false
109117 }
110118
111119 // MARK: - State handling
@@ -274,7 +282,6 @@ private extension BarcodeScannerViewController {
274282
275283extension BarcodeScannerViewController : HeaderViewControllerDelegate {
276284 func headerViewControllerDidTapCloseButton( _ controller: HeaderViewController ) {
277- status = Status ( state: . scanning)
278285 dismissalDelegate? . scannerDidDismiss ( self )
279286 }
280287}
@@ -304,7 +311,7 @@ extension BarcodeScannerViewController: CameraViewControllerDelegate {
304311
305312 func cameraViewController( _ controller: CameraViewController ,
306313 didOutput metadataObjects: [ AVMetadataObject ] ) {
307- guard !locked else { return }
314+ guard !locked && isVisible else { return }
308315 guard !metadataObjects. isEmpty else { return }
309316
310317 guard
0 commit comments