Ios6 ZBar SDK(iOS):使用子视图时ZBar不扫描

Ios6 ZBar SDK(iOS):使用子视图时ZBar不扫描,ios6,sdk,subview,zbar-sdk,Ios6,Sdk,Subview,Zbar Sdk,我已经在其他项目中成功地使用了ZBar,但是在我的最新项目中实现它时遇到了问题。它被设置为一个选项卡式视图应用程序,其中第一个选项卡是扫描仪,第二个选项卡输出结果。为了使用全屏而不显示选项卡栏来解决ZBar的问题,我创建了一个子视图(参见下面的代码)。然而,我也在我的其他ZBar项目上测试过,当你使用子视图时,ZBar从不读取条形码然后存储编码数据。相反,动画扫描跟踪器只是在周围反弹 有什么东西可以添加到我的代码中,允许我在子视图中使用ZBar吗?或者这是在标签应用程序中使用ZBar的错误方式吗

我已经在其他项目中成功地使用了ZBar,但是在我的最新项目中实现它时遇到了问题。它被设置为一个选项卡式视图应用程序,其中第一个选项卡是扫描仪,第二个选项卡输出结果。为了使用全屏而不显示选项卡栏来解决ZBar的问题,我创建了一个子视图(参见下面的代码)。然而,我也在我的其他ZBar项目上测试过,当你使用子视图时,ZBar从不读取条形码然后存储编码数据。相反,动画扫描跟踪器只是在周围反弹

有什么东西可以添加到我的代码中,允许我在子视图中使用ZBar吗?或者这是在标签应用程序中使用ZBar的错误方式吗

以下是我的扫描方法:

- (void) presentReader
{
    ZBarReaderViewController *reader = [ZBarReaderViewController new];
    reader.readerDelegate = self;
    reader.supportedOrientationsMask =     ZBarOrientationMask(UIInterfaceOrientationPortrait);
    reader.showsHelpOnFail = YES;

    NSLog(@"reader presented");

    ZBarImageScanner *scanner = reader.scanner;
    // TODO: (optional) additional reader configuration here
    // EXAMPLE: disable rarely used I2/5 to improve performance
    [scanner setSymbology: 0
               config: ZBAR_CFG_ENABLE
                   to: 0];
    [scanner setSymbology: ZBAR_UPCA
               config: ZBAR_CFG_ENABLE
                   to: 0];
    [scanner setSymbology: ZBAR_DATABAR
               config: ZBAR_CFG_ENABLE
                   to: 1];
    [scanner setSymbology: ZBAR_DATABAR_EXP
               config: ZBAR_CFG_ENABLE
                   to: 1];


    reader.showsCameraControls = NO;  // for UIImagePickerController
    reader.showsZBarControls = NO;
    //reader.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto;
    reader.wantsFullScreenLayout = NO;

    reader.videoQuality = UIImagePickerControllerQualityTypeIFrame1280x720;

    //Subview
    [self.view addSubview:reader.view];

}

这适用于我在UITabBarController中的工作-(图像)

我想你的问题是你没有设置reader.scanCrop

-(void) viewDidAppear:(BOOL)animated {
    self.reader = [ZBarReaderViewController new];
    self.reader.readerDelegate = self;
    self.reader.enableCache = NO;
    self.reader.showsZBarControls = NO;
    self.reader.wantsFullScreenLayout = NO;
    self.reader.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;
    self.reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait);

    ZBarImageScanner *scanner = self.reader.scanner;

    [scanner setSymbology: ZBAR_I25
                   config: ZBAR_CFG_ENABLE
                       to: 0];

    self.reader.scanCrop = CGRectMake(0, 0, 1, 1);
    [self.view addSubview:self.reader.view];

}

- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info {
    id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
    ZBarSymbol *symbol = nil;
    for(symbol in results)
        break;

    NSLog(@"%@",symbol.data);

}
-(void)视图显示:(BOOL)动画{
self.reader=[ZBarReaderViewController新建];
self.reader.readerDelegate=self;
self.reader.enableCache=否;
self.reader.showsZBarControls=否;
self.reader.wantsFullScreenLayout=否;
self.reader.cameraFlashMode=UIImagePickerControllerCameraFlashModeOff;
self.reader.supportedOrientationMask=zBaroOrientationMask(UIInterfaceOrientationGrait);
ZBarImageScanner*scanner=self.reader.scanner;
[扫描仪设置符号:ZBAR_I25]
配置:ZBAR_CFG_启用
至:0];
self.reader.scanCrop=CGRectMake(0,0,1,1);
[self.view addSubview:self.reader.view];
}
-(void)imagePickerController:(UIImagePickerController*)读卡器已使用信息完成PickingMediaWithInfo:(NSDictionary*)信息{
id结果=[info objectForKey:ZBarReaderControllerResults];
ZBarSymbol*符号=nil;
用于(结果中的符号)
打破
NSLog(@“%@”,符号.数据);
}

我也面临这种问题。但是,一旦我将reader对象转换为全局对象而不是本地对象,这就很好了。

谢谢!不幸的是,添加扫描裁剪并没有修复它。我想我的AppDelegate可能有问题…你能分享你的AppDelegate代码吗?当然,我做这个项目是为了你的答案。谢谢非常有用@JeremyRoberts我如何在viewDidLoad中使用该代码???我有标签栏,需要第一个标签qr阅读器。但是如果我将您的代码从
viewdide出现
删除到
viewdideload
图像冻结在prev状态。