2013-11-26 57 views
1

我在我的iPhone应用程序中集成了zbar,下面是扫描条形码的代码。zbar IOS屏幕冻结

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和内存的问题,但无法弄清楚如何在我的情况下可以纠正。请给你宝贵的意见。

+1

我有同样的问题,并最终编写我自己的控制器ZBarReaderView。至少要获得基本功能并不困难。你可能想尝试一下。 (我现在正在工作,但是当我回到家时,我已经通过电子邮件向我发送了一条便条以查找我的代码,如果您认为它会有所帮助,我会尽快发布。) – Mario

+0

谢谢你的伴侣,会期待得到你的hrlp!请张贴,以便它会像我一样! – bharath

回答

1

好的,首先,请忽略我对子类化ZBarReaderView所作的评论。一段时间以来,我遇到了问题,尽管我记得尝试过,但那不是我解决的解决方案。我有几个建议给你。

presentViewController:animated:之后的最上面的代码位尝试将指针设置为reader为零。我做到以下几点:

[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]; 

给这两个建议一试,特别是关于设置参考零的第一个。这可能有帮助。

+0

你好马里奥,谢谢你的详细回复。试着用上面给出的建议。但是,我仍然有同样的问题,这里是我的发现。我第一次扫描时,绿色的矩形条出现,捕捉并传出。第二次扫描时,绿色条出现,立即消失,屏幕挂起。不能改变方向。当我尝试删除应用程序时,它会返回到冻结屏幕。您能否建议在作业完成后如何关闭扫描仪 – bharath

+0

这个问题有点难以理解,因为我没有发现您发布的代码存在问题。所以,我有两件事给你。首先,您是否尝试过使用扫描仪来构建最简单的玩具应用程序?无论您的简单应用程序是否重现该问题,这样做都可以更容易地找出问题。 (我猜猜问题出在你没有发布的代码上。)如果你在一个非常简单的应用程序中重现了这个问题,你可以在Github上发布整个事情,或者让别人看一看。其次,你使用的是什么版本的ZBar SDK? – Mario