我在我的iphone应用程序中集成zbar,下面是扫描条形码的代码。
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
[self presentModalViewController: reader
animated: YES];
完成后,我将执行以下操作。
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
id<NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
// Do what ever u want
[reader dismissModalViewControllerAnimated: YES];
}
这个的问题是,我在第一个实例中使用IOS7及其扫描完美,但是,对于第二个实例,在扫描之后,它不会继续进行,甚至取消按钮也不会工作并且屏幕保持在相机中模式。我读到了IOS7的cpu和内存问题,但无法弄清楚如何在我的情况下纠正它。请提供宝贵的意见。
答案 0 :(得分:1)
好的,首先,请忽略我对子类化ZBarReaderView的评论。不久之前,我遇到了问题,即使我记得尝试过,但这不是我解决的问题。我有几点建议。
在presentViewController:animated:
之后的顶部代码中尝试将指针设置为reader
为nil。我做了以下事情:
[self presentViewController:reader animated:YES completion:nil];
reader = nil;
您正在呈现的视图控制器将保留在阅读器上,因此不必担心丢失参考。我认为这实际上有助于记忆。 (并且,当你遇到问题时,事情首先起作用,然后在不止一次这样做之后失败,这通常是一个记忆问题。)
除此之外,在顶部位,我关闭所有符号,然后只启用我感兴趣的符号。例如,我可能会这样做:
// Enable only ISBN-13 & ISBN-10 barcodes
[scanner setSymbology:0 config:ZBAR_CFG_ENABLE to:0];
[scanner setSymbology:ZBAR_EAN13 config:ZBAR_CFG_ENABLE to:1];
[scanner setSymbology:ZBAR_ISBN10 config:ZBAR_CFG_ENABLE to:1];
尝试这两个建议,特别是关于将引用设置为nil的第一个建议。这可能有所帮助。