2017-09-03 54 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后。

相关问题