2013-05-19 26 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; 
    } 
}