我正在使用下面的函数来获取metadataObject
并将其发布到服务器。
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!)
现在我想向 QR 扫描仪添加一个计时器(计数器),以便当用户开始扫描 QR 码时,计时器开始倒计时(从 3 开始),当它达到0
时,其余代码(将元数据发布到服务器)运行。
我确实将self.setTimer()
放在上面的函数中,但是captureSession.stop()
会立即被调用,并且扫描仪不会等待计时器完成计数。
我该如何处理?
好吧,我找到了答案。 我使用一个标志,以便captureOutput
函数被调用一次(这样self.setTimer()
就不会被调用几次)。
然后使用
DispatchQueue.main.asyncAfter(deadline: .now()+3, execute: {
停止captureSession
,然后在计时器完成倒计时 3 秒后执行其余代码(将元数据发布到服务器)。
所以现在扫描程序运行,如果它检测到QR-Code
计时器开始运行,其余代码在 3 秒后运行。