8

我已经将 zXing 项目加载到我自己的项目中。它加载正常,zXing 扫描仪在按钮调用后弹出。

我可以关闭 zxingControllerDidCancel 上的视图控制器,但是当我扫描二维码时,无法识别任何代码,因此 didScanResult 函数永远不会触发。

有人对这个有任何想法吗?

didScanResult 函数如下。

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

}

注意:我不确定这是否相关,但是当扫描仪出现时,我得到了应用程序的记录:“wait_fences: failed to receive reply: 10004003”

4

1 回答 1

4

该教程没有提到您必须将 a 添加QRCodeReader到您的ZXingWidgetController.

ZXingWidgetController有一个名为 的属性readers,它是一个NSSet包含阅读器实例(例如 的实例QRCodeReader)的属性。粗略地说,读者的任务是分析相机拍摄的图像并提取编码信息。你ZXingWidgetController必须知道它应该使用的读者,否则它没有机会做任何有意义的事情。因此,您必须readers在呈现 ZXingWidget 之前设置属性。

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

应该做。

于 2012-09-27T06:50:58.547 回答