【发布时间】:2013-12-16 11:59:43
【问题描述】:
我正在使用 AVFoundation 和 AVCaptureMetadataOutput 在 iOS7 中扫描 QR 条码,我提供了一个视图控制器,允许用户扫描条码。它工作正常,即。正在扫描条形码,我可以将条形码字符串输出到控制台。
但它会一遍又一遍地扫描,请参阅屏幕截图。我想要它做的是只扫描一次条形码然后dismissViewController。
这是我的委托方法代码:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
CGRect highlightViewRect = CGRectZero;
AVMetadataMachineReadableCodeObject *barCodeObject;
NSString *detectionString = nil;
NSArray *barCodeTypes = @[AVMetadataObjectTypeUPCECode, AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeCode39Mod43Code,
AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode93Code, AVMetadataObjectTypeCode128Code,
AVMetadataObjectTypePDF417Code, AVMetadataObjectTypeQRCode, AVMetadataObjectTypeAztecCode];
for (AVMetadataObject *metadata in metadataObjects) {
for (NSString *type in barCodeTypes) {
if ([metadata.type isEqualToString:type])
{
barCodeObject = (AVMetadataMachineReadableCodeObject *)[self.preview transformedMetadataObjectForMetadataObject:(AVMetadataMachineReadableCodeObject *)metadata];
highlightViewRect = barCodeObject.bounds;
detectionString = [(AVMetadataMachineReadableCodeObject *)metadata stringValue];
break;
}
}
if (detectionString != nil)
{
NSLog(@"Barcode: %@", detectionString);
break;
}
else
NSLog(@"None");
}
self.highlightView.frame = highlightViewRect;
}
【问题讨论】:
-
你是如何解决这个问题的?我有一个类似的问题,按照上面列出的 SO 答案并没有解决我的问题。
-
我可以看看你正在使用的代码吗?我使用了答案中的代码并配置了它以供我使用
标签: ios iphone ios7 avfoundation barcode