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



我正在使用下面的函数来获取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 秒后运行。

最新更新