AVCaptureMetadataOutputObjectsDelegate not called in swift 4 for QR scanner

杀马特。学长 韩版系。学妹 提交于 2019-12-10 14:14:33

问题


I was working on QR code scanner app on iOS where i was getting output AVCaptureOutput on the delegate method captureOutput:didOutputMetadataObjects:fromConnection:.

It was working perfectly on swift 3. After I've updated to xcode 9 and swift 4, it stopped working.


回答1:


Okay I've found an update here.

Found that AVCaptureMetadataOutputObjectsDelegate method is changed

from

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

to

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

After changing this delegate method, its working good now.




回答2:


in Swift 4:

Replace

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

With:

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


来源:https://stackoverflow.com/questions/46639519/avcapturemetadataoutputobjectsdelegate-not-called-in-swift-4-for-qr-scanner

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!