2013-05-19 64 views
3

試圖使用ZBar捕獲條形碼。我目前有以下代碼。掃描儀顯示並顯示掃描條形碼,因爲代碼周圍出現綠色覆蓋圖。我不知道如何捕捉解碼結果。使用ZBar掃描和捕獲條形碼

我可能會錯誤的,所以想我會問。掃描時沒有任何內容輸出到控制檯,所以不要認爲didReadSymbols被調用。

.H

@interface ScannerViewController : UIViewController <ZBarReaderDelegate> { 
} 

@property (strong, nonatomic) IBOutlet UILabel *readerResult; 
@property (strong, nonatomic) IBOutlet UIView *readerView; 
@property (strong, nonatomic) IBOutlet ZBarReaderView *zbr; 

.M

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // force class to load so it may be referenced directly from nib 
    [ZBarReaderViewController class]; 

    ZBarReaderViewController *reader= [ZBarReaderViewController new]; 
    reader.readerDelegate = self; 

    ZBarImageScanner *scanner = reader.scanner; 
    //reader.cameraOverlayView = self.readerView; 
    [scanner setSymbology: 0 
          config: ZBAR_CFG_ENABLE 
           to: 1]; 
    [reader setShowsZBarControls:NO]; 
    [reader.readerView start]; 
    self.zbr = reader.readerView; 
    [self.view addSubview:reader.view]; 

} 

- (void) zbr: (ZBarReaderView*) view 
    didReadSymbols: (ZBarSymbolSet*) syms 
      fromImage: (UIImage*) img 
{ 
    NSLog(@"Scanner used"); 
    //do something useful with results and display resultText in resultViewController 
    for(ZBarSymbol *sym in syms) { 
     NSLog(@"Logged"); 
     //return resultText; 
     break; 
    } 
} 

任何意見將是巨大的。目前我對此很困惑。乾杯。

+0

同樣問題在這裏 –

回答

0

當我看到了zbar和文檔,I see the delegate method signature is

- (void) readerView:(ZBarReaderView*)readerView didReadSymbols:(ZBarSymbolSet*)symbols fromImage:(UIImage*)image 

這是不一樣的東西,你有什麼上面。將您的「zbr」替換爲「readerView」,並且您的委託方法應調用

0

我將下面添加到ScannerViewController界面。

ZBarReaderViewController *reader; 

然後,我改變了readerView方法的下面,它完美的工作。

- (void) imagePickerController: (UIImagePickerController*) reader 
didFinishPickingMediaWithInfo: (NSDictionary*) info 
{ 
    id<NSFastEnumeration> results = 
    [info objectForKey: ZBarReaderControllerResults]; 
    UIImage *image = 
    [info objectForKey: UIImagePickerControllerOriginalImage]; 
    NSString *resultText = [[NSString alloc] init]; 
    for(ZBarSymbol *sym in results) { 

     NSLog(@"%@", sym.data); 
     resultText = sym.data; 
     //return resultText; 
     break; 
    } 
}