我正在编写一个条形码阅读器应用程序,但无法检测线性类型的条形码,例如Code 128。对于QR码、EAN13类型和ISBN类型,我没有问题。我的代码非常简单:
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
if metadataObjects.count != 0 {
if let object = metadataObjects[0] as? AVMetadataMachineReadableCodeObject {
if object.type == AVMetadataObject.ObjectType.qr {
if let text = object.stringValue {
print(text)
session.stopRunning()
let alertVC = UIAlertController(title: "QR Code", message: text, preferredStyle: UIAlertControllerStyle.alert)
alertVC.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
self.session.startRunning()
}))
present(alertVC, animated: true, completion: nil)
}
} else {
if let text = object.stringValue {
print("Other code detected: ", text)
}
}
}
}
我使用了这个免费的在线条形码生成器来测试我的应用程序。我能够检测到大多数其他条形码,但是不能检测线性码。是否有人也遇到了这样的问题?
metadataObjectTypes
。确保包括新语法[.code128]
中的AVMetadataObjectTypeCode128Code
。 - Leo Dabus