2013-04-04 35 views
1

我用在其他项目中成功地使用zbar和但是。它被设置为一个选项卡式视图应用程序,其中第一个选项卡是扫描仪,第二个输出结果。为了解决ZBar的全屏问题并且不显示标签栏,我创建了一个子视图(见下面的代码)。然而,我也在其他ZBar项目上测试了这一点,当您使用子视图时,ZBar不会读取条形码,然后存储编码数据。相反,动画扫描跟踪器只是反弹。zbar和SDK(IOS):我有实现它变成我的最新项目问题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]; 

} 

回答

3

这对我的作品中的UITabBarController - (图)http://db.tt/cgVxDd0x

我觉得你的问题是,你没有设置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); 

} 
+0

谢谢!不幸的是,添加扫描作物并没有解决它。我想我的AppDelegate可能有问题...你可以分享你的AppDelegate代码吗? – user1486548 2013-04-12 18:20:06

+0

当然,我为你的答案做了这个项目。 https://www.dropbox.com/s/dojirkslmpfk8ym/CameraView.zip – 2013-04-14 22:25:56

+1

谢谢!令人难以置信的帮助! – user1486548 2013-04-15 14:09:22

0

我也遇到过这样的问题。但是,一旦我将读者对象变成了全局对象而不是本地对象,那么这个工作正常。