ここで本当に助けが必要です。私はiOS/Objective-Cにかなり慣れていないので、問題の解決が明らかな場合、または私のコードがひどい場合は申し訳ありません。気楽に!! :-)
QRコードを読み取るためのZBarSDKを構築中の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に表示するためだけに年齢を重ねました。皆さんありがとう。