2012-02-13 15 views
1

私はすでに既存のiPhoneアプリにzxingを統合しようとしています。私は、プロジェクトのダウンロードに同封されたScanTestの例を参照し、スキャナの構築と実行に成功しました。iPhone用のzxingを統合しているときのビューの管理

私の問題は、スキャナを組み込むプロジェクトのビューを管理することにあります。現在、スキャナ機能を必要とする既存のView Controller(VC-A)があります。 ZXingWidgetControllerスキャナビューを起動するための新しいビューコントローラ(VC-B)を作成しました。今すぐスキャンテストサンプルにあるよう> VC-B-> presentModalViewController(ZXingWidgetController)

-

VC-A-> presentModalViewController(VC-B):だからフローは次のようになります。アプリケーションでは、スキャンが完了すると、ZXingWidgetControllerのビューを閉じるVC-BからdissmissModalViewControllerが呼び出されます。問題は私が何をしようとしていても、私はVC-BをVC-Aに戻すことができません。私は、スキャンが完了/キャンセルされたときにVC-Aに通知するための一連のデリゲートメソッドを作成しました。私はこれらの方法でスキャンデータを取得しますが、VC-Bの見解を却下することはできません。

既存のビューコントローラVC-Aを変更したくないため、ZXingWidgetControllerを直接組み込んでVC-Bを完全に破棄することはできません(VC-Aを.mmファイルにする必要があるため) 。

編集: 今私は、ZXingWidgetControllerのモーダルを完全に取り除いています。 VC-B

//Create custom overlay 
OverlayView *scannerView = [[OverlayView alloc]initWithFrame:CGRectMake(27, 107, 267, 253) cancelEnabled:NO oneDMode:NO]; 
scannerView.displayedMessage = nil; 
widController = [[ZXingWidgetController alloc]init ]; 

//set the overlay of widController 
[widController setOverlayView:scannerView]; 

QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init]; 
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil]; 
[qrcodeReader release]; 
widController.readers = readers; 
widController.delegate = self; 
[readers release]; 
[scannerView release]; 
NSBundle *mainBundle = [NSBundle mainBundle]; 
widController.soundToPlay = [NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO]; 

//Add scanner to the view 
    [self.view addSubview:widController.view]; 

viewDidLoadにこのコードを使用すると、今ZXingWidgetControllerのカメラビューは全く見えません。誰でもZxingのオーバーレイをカスタマイズしましたか?私はそれほど似たような問題は見つかっていないようです。

答えて

3

ZXingを使用すると、オーバーレイビューに直接アクセスしてサブビューを追加/変更できます。たとえば、次のように、この概要の上にImageViewのを置くことが行われます

ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO]; 

UIImage *qrOverlayImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"overlay-image" ofType:@"png"]]; 

UIImageView *qrOverlayImageView = [[[UIImageView alloc] initWithImage:qrOverlayImage] autorelease]; 
qrOverlayImageView.contentMode = UIViewContentModeScaleAspectFit; 
qrOverlayImageView.backgroundColor = [UIColor clearColor]; 

[widController.overlayView addSubview:qrOverlayImageView]; 

使用PNG画像を透明で、プログラムでカスタムオーバーレイを作成するなどUILabelsを追加します。

2

ご注意ください。 Xcode 4.4でのMountain LionのテストZBarのために既存のプロジェクトをコンパイルすることができませんでした。私は、ZBarがXcode 4.4で動作するように更新されるのか、ZBarが動作するようにする何かがXcode 4.4で変更されるのかどうかは言えません。知るか!

Zxingを使用するようにプロジェクトを更新しましたが、代わりにZoingを使用するように更新しました。

更新: 私は今、ZXingObjC(https://github.com/TheLevelUp/ZXingObjC)の使用を開始しました。 Zxingよりも作業が容易で、Zxingには欠けている機能もたくさんあります。

関連する問題