我将zbar集成到我的iphone应用程序中,下面是用于扫描条形码的代码。
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的中央处理器和内存的问题,但不知道如何在我的情况下纠正它。请给出您宝贵的意见。
发布于 2013-11-27 08:54:52
好的,首先,请忽略我关于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的建议。这可能会有所帮助。
https://stackoverflow.com/questions/20213178
复制相似问题