Преглед на файлове

close AVCaptureSession when leaving qr-main-tab

B. Petersen преди 5 години
родител
ревизия
ed0a41487c
променени са 2 файла, в които са добавени 11 реда и са изтрити 1 реда
  1. 5 1
      deltachat-ios/Controller/QrCodeReaderController.swift
  2. 6 0
      deltachat-ios/Controller/QrPageController.swift

+ 5 - 1
deltachat-ios/Controller/QrCodeReaderController.swift

@@ -131,6 +131,10 @@ class QrCodeReaderController: UIViewController {
     func startSession() {
         captureSession.startRunning()
     }
+
+    func stopSession() {
+        captureSession.stopRunning()
+    }
 }
 
 extension QrCodeReaderController: AVCaptureMetadataOutputObjectsDelegate {
@@ -139,8 +143,8 @@ extension QrCodeReaderController: AVCaptureMetadataOutputObjectsDelegate {
         if let metadataObj = metadataObjects[0] as? AVMetadataMachineReadableCodeObject {
             if supportedCodeTypes.contains(metadataObj.type) {
                 if metadataObj.stringValue != nil {
-                    self.delegate?.handleQrCode(metadataObj.stringValue!)
                     self.captureSession.stopRunning()
+                    self.delegate?.handleQrCode(metadataObj.stringValue!)
                 }
             }
         }

+ 6 - 0
deltachat-ios/Controller/QrPageController.swift

@@ -47,12 +47,18 @@ class QrPageController: UIPageViewController, ProgressAlertHandler {
     }
 
     override func viewWillAppear(_ animated: Bool) {
+        // QrCodeReaderController::viewWillAppear() is on called on section change, not on main-tab change
         if let qrCodeReaderController = self.qrCodeReaderController {
             qrCodeReaderController.startSession()
         }
     }
 
     override func viewWillDisappear(_ animated: Bool) {
+        // QrCodeReaderController::viewWillDisappear() is on called on section change, not on main-tab change
+        if let qrCodeReaderController = self.qrCodeReaderController {
+            qrCodeReaderController.stopSession()
+        }
+
         self.progressObserver = nil
     }