3

尝试使用 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;
    }
}

任何建议都会很棒。我现在对此感到非常困惑。干杯。

4

2 回答 2

0

当我查看 ZBar 的文档时,我看到委托方法签名是

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

这与您上面的内容不同。将您的“ zbr”替换为“ readerView”,您的委托方法应该被调用。

于 2013-05-19T18:18:12.003 回答
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;
    }
}
于 2013-05-19T18:22:58.007 回答