2013-04-04 34 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

我也遇到過這樣的問題。但是,一旦我將讀者對象變成了全局對象而不是本地對象,那麼這個工作正常。