对于QR扫描程序,未在swift 4中调用AVCaptureMetadataOutputObjectsDelegate

时间:2017-10-09 05:45:56

标签: qr-code ios11 swift4

我正在使用iOS上的QR代码扫描程序应用程序,我在代理方法AVCaptureOutput上获得了输出captureOutput:didOutputMetadataObjects:fromConnection:

它在swift 3上完美运行。在我更新到xcode 9和swift 4之后,它停止了工作。

2 个答案:

答案 0 :(得分:16)

好的,我找到了更新here

发现AVCaptureMetadataOutputObjectsDelegate方法已更改

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

metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection)

更改此委托方法后,它现在工作正常。

答案 1 :(得分:0)

在Swift 4中:

替换

let metadataOutput = AVCaptureMetadataOutput()
metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
metadataOutput.metadataObjectTypes = metadataOutput.availableMetadataObjectTypes

使用:

let metadataOutput = AVCaptureMetadataOutput()
metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
let supportedCodeTypes = [AVMetadataObject.ObjectType.upce,
                          AVMetadataObject.ObjectType.code39,
                          AVMetadataObject.ObjectType.code39Mod43,
                          AVMetadataObject.ObjectType.code93,
                          AVMetadataObject.ObjectType.code128,
                          AVMetadataObject.ObjectType.ean8,
                          AVMetadataObject.ObjectType.ean13,
                          AVMetadataObject.ObjectType.aztec,
                          AVMetadataObject.ObjectType.pdf417,
                          AVMetadataObject.ObjectType.qr]

metadataOutput.metadataObjectTypes = supportedCodeTypes