2017-09-03 41 views
1

我正在使用以下函數獲取metadataObject並將其發佈到服務器。如何在swift中使用定時器實現QRScanner?

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) 

現在我想一個定時器(計數器),因此當用戶開始掃描QR碼添加到有QR掃描儀,計時器開始倒計時(3),當它到達0的其餘代碼(發佈元數據到服務器)運行。

我在上面的函數裏面放了self.setTimer(),但captureSession.stop()立即被調用,Scanner不等待Timer完成計數。

我該如何處理?

回答

0

那麼我找到了答案。 我使用一個標誌,以便captureOutput函數被調用一次(這種方式self.setTimer()不會被調用多次)。

然後使用

DispatchQueue.main.asyncAfter(deadline: .now()+3, execute: { 

停止captureSession,然後當計時器完成倒計時3秒後執行代碼(發佈元數據服務器)的其餘部分。

所以,現在掃描儀運行,如果它檢測到QR-Code定時器開始運行,其餘代碼運行3secs後。

相關問題