如何在swift中使用计时器实现QRScanner?

时间:2017-09-03 12:19:51

标签: ios swift grand-central-dispatch qr-code barcode-scanner

我使用以下函数获取metadataObject并将其发布到服务器。

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

现在我想在QR扫描仪上添加一个计时器(计数器),这样当用户开始扫描QR码时,计时器开始倒计时(从3开始),当它到达0时其余的代码(将元数据发布到服务器)运行。

我确实将self.setTimer()放在上面的函数中,但是captureSession.stop()会立即调用,而Scanner不会等待Timer完成计数。

我该如何处理?

1 个答案:

答案 0 :(得分:0)

我找到了答案。 我使用一个标志,以便captureOutput函数被调用一次(这样self.setTimer()不会被多次调用)。

然后使用

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

停止captureSession,然后在计时器完成倒计时3秒后执行其余代码(将元数据发布到服务器)。

现在扫描程序运行,如果检测到QR-Code,计时器开始运行,其余代码在3秒后运行。

相关问题