在UIView中实现ZBar二维码阅读器



我真的需要帮助。我是iOS/Objective-C的新手,如果问题的解决方案很明显,或者我的代码很糟糕,我很抱歉。对我宽容一点!!:-)

我正在努力将用于读取二维码的ZBarSDK集成到我正在构建的iPad应用程序中。如果我使用ZBarReaderController(其中有很多关于实现的教程和指南),它会很好地工作。然而,我想让相机出现在UIView中,而不是全屏相机。

现在,我已经按照预期在UIView(ZBarReaderView)中显示了相机视图(readerView),但当它扫描代码时,我遇到了一个错误。在扫描代码之前,错误不会出现,这让我相信这要么与委托有关,要么是其他原因。

以下是我的代码的重要部分:(ZBarSDK.h在PCH文件中导入)

SignInViewController.h

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@class AVCaptureSession, AVCaptureDevice;
@interface SignInViewController : UIViewController
< ZBarReaderDelegate >
{
ZBarReaderView *readerView;
UITextView *resultText;
}
@property (nonatomic, retain) UIImagePickerController *imgPicker;
@property (strong, nonatomic) IBOutlet UITextView *resultText;
@property (strong, nonatomic) IBOutlet ZBarReaderView *readerView;
-(IBAction)StartScan:(id) sender;

SignInViewController.m

#import "SignInViewController.h"
@interface SignInViewController ()
@end
@implementation SignInViewController

@synthesize resultText, readerView;
-(IBAction)StartScan:(id) sender
{
readerView = [ZBarReaderView new];
readerView.readerDelegate = self;
readerView.tracksSymbols = NO;
readerView.frame = CGRectMake(30,70,230,230);
readerView.torchMode = 0;
readerView.device = [self frontFacingCameraIfAvailable];
ZBarImageScanner *scanner = readerView.scanner;
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];

[self relocateReaderPopover:[self interfaceOrientation]];
[readerView start];
[self.view addSubview: readerView];
resultText.hidden=NO;
}

- (void) readerControllerDidFailToRead: (ZBarReaderController*) reader
withRetry: (BOOL) retry{
NSLog(@"the image picker failing to read");
}
- (void) imagePickerController: (UIImagePickerController*) reader     didFinishPickingMediaWithInfo: (NSDictionary*) info
{

NSLog(@"the image picker is calling successfully %@",info);
id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
NSString *hiddenData;
for(symbol in results)
hiddenData=[NSString stringWithString:symbol.data];

NSLog(@"the symbols  is the following %@",symbol.data);
resultText.text=symbol.data;

NSLog(@"BARCODE= %@",symbol.data);
NSLog(@"SYMBOL : %@",hiddenData);
resultText.text=hiddenData;
}

当扫描代码时我得到的错误:

2012-12-16 14:28:32.797 QRTestApp[7970:907] -[SignInViewController     readerView:didReadSymbols:fromImage:]: unrecognized selector sent to instance 0x1e88b1c0
2012-12-16 14:28:32.799 QRTestApp[7970:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SignInViewController readerView:didReadSymbols:fromImage:]: unrecognized selector sent to instance 0x1e88b1c0'

我还不太担心结果会发生什么,只是想克服这个错误。我花了很长时间才让相机出现在UIView中,因为严重缺乏ZBarReaderView的教程或文档(无论如何都是初学者的)。谢谢大家。

我解决了这个问题。委托名称不正确。它应该是"ZbarReaderViewDelegate"。我错过了"视图"部分。Doh!!

@interface SignInViewController : UIViewController
< ZBarReaderViewDelegate >
{
ZBarReaderView *readerView;
UITextView *resultText;
}

最新更新