如何在swift中实现带定时器的QRScanner?

How to implement QRScanner with timer in swift?

我正在使用以下函数将 metadataObject 和 post 发送到服务器。

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

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

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

我该如何处理?

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

然后用了

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

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

所以现在扫描器运行,如果它检测到 QR-Code 计时器启动 运行,其余代码在 3 秒后运行。