2017-09-03 1 views
1

私はmetadataObjectを入手してサーバーに投稿するために以下の関数を使用しています。タイマーでQRScannerを迅速に実装する方法は?

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

今、私はQR-スキャナにタイマ(カウンタ)を追加したいユーザーは、QRコードのスキャンを開始するときので、タイマ(3から)ダウンカウントを開始し、それが0の残りの部分に到達したときコード(サーバーへのメタデータのポスト)が実行されます。

上記の関数の中にself.setTimer()を入れましたが、captureSession.stop()がすぐに呼び出され、スキャナがタイマーのカウントを完了するのを待たずにいます。

どうすれば対応できますか?

答えて

0

私は答えを見つけました。 captureOutput関数が一度呼び出されるようにフラグを使用します(この方法では、self.setTimer()は何度も呼び出されません)。

はその後captureSessionを停止してからタイマーがカウントダウンを行った場合3second後(サーバーへのメタデータを掲載)残りのコードを実行するために

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

を使用しました。

スキャナが実行され、QR-Codeが検出された場合、タイマーは動作を開始し、残りのコードは3秒後に実行されます。

関連する問題