如何在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 秒后运行。
我正在使用以下函数将 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 秒后运行。