Получите QR-данные в разное время с помощью AVFoundation в swift5

#ios #swift #swift5

#iOS #быстрый #swift5

Вопрос:

Я использую AVFoundation для сканирования QR-кода. Но когда я сканирую QR-код, он сканируется несколько раз ( два или три раза).Отсканируйте QR-код и обратно еще раз. Я использовал приведенный ниже код для сканирования кода…

 import UIKit  import AVFoundation   class QRScanning: UIViewController ,AVCaptureMetadataOutputObjectsDelegate {    var captureSession: AVCaptureSession!  var previewLayer: AVCaptureVideoPreviewLayer!    override func viewDidLoad() {  super.viewDidLoad()    view.backgroundColor = UIColor.black  captureSession = AVCaptureSession()    guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return }  let videoInput: AVCaptureDeviceInput    do {  videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)  } catch {  return  }    if (captureSession.canAddInput(videoInput)) {  captureSession.addInput(videoInput)  } else {  failed()  return  }    let metadataOutput = AVCaptureMetadataOutput()    if (captureSession.canAddOutput(metadataOutput)) {  captureSession.addOutput(metadataOutput)    metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)  metadataOutput.metadataObjectTypes = [.qr]  } else {  failed()  return  }    previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)  previewLayer.frame = view.layer.bounds  previewLayer.videoGravity = .resizeAspectFill  view.layer.addSublayer(previewLayer)    captureSession.startRunning()  //end qr  }      override func viewWillAppear(_ animated: Bool) {    super.viewWillAppear(animated)  if (captureSession?.isRunning == false) {  captureSession.startRunning()  }  }    override func viewWillDisappear(_ animated: Bool) {    super.viewWillDisappear(animated)  if (captureSession?.isRunning == true) {  captureSession.stopRunning()  }    }    //begin qr  func failed() {    Custom_Sweet_alert.show_error_message(messsage: "Your device does not support scanning a code from an item. Please use a device with a camera.")  captureSession = nil  }      func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {    self.previewLayer?.isHidden = true  print("01 **********","didOutput")  self.captureSession.stopRunning()    if let metadataObject = metadataObjects.first {  guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return }  guard let stringValue = readableObject.stringValue else { return }  AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))    found(code: stringValue)  }    dismiss(animated: true)  }    func found(code: String) {  print("found **********",code)  }    override var prefersStatusBarHidden: Bool {  return true  }    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {  return .portrait  }      //end qr    }  

Как остановить многократное сканирование QR-кода? Пожалуйста, помогите мне..