2012-12-16 63 views
3

我真的需要帮助。我对iOS/Objective-C相当陌生,所以很抱歉,如果问题解决方案很明显,或者我的代码很糟糕。轻松点我! :-)在UIView中实现ZBar QR代码阅读器

我正努力将ZBarSDK阅读QR码整合到我正在构建的iPad应用程序中。如果我使用ZBarReaderController(其中有很多关于实现的教程和指南),它工作正常。但是我想让相机出现在UIView中,而不是全屏相机。

现在我已经得到尽可能使相机视图(readerView)出现在UIView(ZBarReaderView)中,但我在扫描代码时遇到了错误。错误不会出现,直到代码扫描,让我相信这是委托相关或其他。

这里是我的代码的重要组成部分:(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' 

我并不太担心结果会发生什么,只是想克服这个错误。因为严重缺乏关于ZBarReaderView的教程或文档(对于初学者),我花了很多时间让相机进入UIView。谢谢大家。

回答

2

我解决了这个问题。有一个不正确的代表名称。它应该是“ZbarReaderViewDelegate”。我错过了“观点”部分。卫生署!

​​