Внедрение ZBar QR Code Reader в UIView

Мне действительно нужна помощь здесь. Я новичок в iOS/Objective-C, поэтому извините, если решение проблемы очевидно или мой код ужасен. Полегче со мной!! :-)

Я изо всех сил пытаюсь интегрировать ZBarSDK для чтения QR-кодов в приложение для iPad, которое я создаю. Если я использую ZBarReaderController (для которого существует множество руководств и руководств по реализации), он работает нормально. Однако я хочу, чтобы камера отображалась в UIView, а не в полноэкранном режиме.

Теперь я дошел до того, что сделал так, чтобы вид с камеры (readerView) появился в UIView (ZBarReaderView), как и ожидалось, но я получаю сообщение об ошибке при сканировании кода. Ошибка не появляется до тех пор, пока не будет отсканирован код, заставляющий меня поверить, что это связано либо с делегатом, либо с чем-то еще.

Вот важные части моего кода: (ZBarSDK.h импортируется в файл PCH)

Сингинвиевконтроллер.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 (во всяком случае, для новичков). Спасибо всем.


person Bobster4300    schedule 16.12.2012    source источник


Ответы (1)


Я исправил это. Неверное имя делегата. Это должно было быть «ZbarReaderViewDelegate». Мне не хватало части "вид". Дох!!

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