我正在iOS上的QR代码扫描仪应用程序上工作,我在委托方法AVCaptureOutput
上获得输出captureOutput:didOutputMetadataObjects:fromConnection:
。
它在swift 3上完美运行。在我更新到xcode 9和swift 4之后,它停止了工作。
好的,我发现了更新here。
发现AVCaptureMetadataOutputObjectsDelegate
方法改变了
从
captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!)
至
metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection)
更改此委托方法后,其工作正常。
在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