2012-12-16 5 views
3

정말 도움이 필요합니다. 나는 iOS/Objective-C에 상당히 익숙하다. 문제 해결이 명백하거나 내 코드가 끔찍한 경우 미안해. 나 한테 쉽게! :-)UIView에서 ZBar QR 코드 리더 구현

저는 건물의 iPad 앱에 QR 코드를 읽기 위해 ZBarSDK를 통합하기 위해 고심하고 있습니다. 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; 

} 

오류 I 코드가 스캔 될 때 얻기 :

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' 

결과에 어떤 변화가 생길지 걱정하지 않습니다. 단지이 오류를 해결하고 싶습니다. ZebraReaderView (초보자 용)에 대한 자습서 나 설명서가 부족하여 UIView에 카메라가 표시되도록 나이를 먹었습니다. 모두에게 감사드립니다.

답변

2

해결했습니다. 잘못된 대리인 이름이 있습니다. "ZbarReaderViewDelegate"여야합니다. 나는 "보기"부분을 놓치고 있었다. Doh !!

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