iPhone的zXing QR扫描器 - didscanresult函数从未触发

8

我已将zXing项目加载到我的项目中。

它可以正常加载,在调用按钮后,zXing扫描仪弹出。

我可以在zxingControllerDidCancel上解除视图控制器,但是当我扫描QR码时,从未识别任何代码,因此didScanResult函数从未触发。

有人对此有什么想法吗?

下面是didScanResult函数。

-(void)zxingController:(ZXingWidgetController *)controller didScanResult:(NSString *)result{
resultLabel.text = result;
NSLog(@"did scan!!!");
[self dismissModalViewControllerAnimated:NO];

注意:我不确定这是否相关,但当扫描仪出现时,应用程序会记录以下内容:“wait_fences:未能收到回复:10004003”。


你能否发布一下你是如何创建和显示ZXingWidgetController的? - Aaron Wojnowski
基本上,我跟随了这个教程将它添加到我的项目中(http://yannickloriot.com/2011/04/how-to-install-zxing-in-xcode-4/)然后我将它们导入到我的视图控制器.h文件中使用了ZXingDelegate的“didScanResult”和“zxingControllerDidCancel”函数。 如先前所述,“zxingControllerDidCancel”完美地工作。这能帮到你吗? - Scott McConnell
查看这个问题来解决10004003错误。 - Daniel
1
该教程没有提到您必须将QRCodeReader添加到ZXingWidgetController的读取器集合中。 - ilmiacs
@ilmiacs 谢谢你的回复。但是这到底意味着什么? - Scott McConnell
1个回答

4
那个教程没有提到你必须将QRCodeReader添加到ZXingWidgetController的读取器集合中。 ZXingWidgetController有一个名为readers的属性,它是一个包含阅读器实例(例如QRCodeReader实例)的NSSet。粗略地说,阅读器的任务是分析相机拍摄的图像并提取编码信息。您的ZXingWidgetController必须知道应该使用哪些读取器,否则它就无法执行任何有意义的操作。因此,在呈现ZXingWidget之前,您必须设置readers属性。
ZXing项目有一个演示此功能的示例应用程序。如果您使用ARC,则
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
QRCodeReader* qRCodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc] initWithObjects:qRCodeReader,nil];
widController.readers = readers;
[self presentModalViewController:widController animated:YES];

应该这样做。

你真是个冠军!非常感谢你的帮助 - 现在它完美地运行 :) - Scott McConnell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接