2012-02-13 20 views
1

我正在嘗試將zxing集成到我現有的iPhone應用程序中。我已經提到了項目下載中包含的ScanTest示例,併成功構建並運行了掃描程序。在爲iPhone集成zxing時管理視圖

我的問題在於管理項目的意見,以納入掃描儀。目前我有一個已經存在的視圖控制器(VC-A),它需要掃描器的能力。我創建了一個新的視圖控制器(VC-B)來啓動ZXingWidgetController掃描儀視圖。因此流程如下所示:

VC-A-> presentModalViewController(VC-B) - > VC-B-> presentModalViewController(ZXingWidgetController)

現在,作爲是ScanTest樣品中應用程序,當掃描完成時,將從VC-B調用dissmissModalViewController,該操作將取消ZXingWidgetController的視圖。問題出在我嘗試的方式,我無法解僱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,或者是否會在Xcode 4.4中發生改變,使ZBar能夠正常工作。誰知道!

我已經更新了我的項目,以便使用Zxing,即使它很難得到工作並對其進行配置。

更新: 我現在(https://github.com/TheLevelUp/ZXingObjC)使用ZXingObjC開始。 Zxing比Zxing更容易工作,而且Zxing中還有很多功能缺失。