我一直在這個問題上坐了幾個小時。搜索了很多,並找不到一個好的答案。iOS ZXingWidget - 在自己的ViewController.view中使用ZXingWidgetViewController的視圖作爲子視圖
我正在嘗試使用iOS zxing Widget進行QR碼掃描。我有一個ViewController,它在我的UINavigationController中作爲一個Item被推送,或者從另一個ViewController Modally地呈現。這個ViewController有3個不同視圖的SegmentedControl。其中兩個視圖是加載簡單網站的UIWebViews,沒有什麼特別的。
選擇看起來是這樣的:
- (IBAction)segmentedControlValueChanged:(id)sender {
NSString *urlString;
ZXingWidgetController *widController;
QRCodeReader* qrcodeReader;
NSSet *readers;
switch (segmentedControl.selectedSegmentIndex) {
case 0:
[self.view bringSubviewToFront:self.productSearchWebView];
urlString = [[SACommunicationService sharedCommunicationService] getURLforKey:kURLTypeProductSearch];
[self.productSearchWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];
break;
case 1:
[self.view bringSubviewToFront:self.marketSearchWebView];
urlString = [[SACommunicationService sharedCommunicationService] getURLforKey:kURLTypeMarketSearch];
[self.marketSearchWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];
break;
case 2:
widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
qrcodeReader = [[QRCodeReader alloc] init];
readers = [[NSSet alloc] initWithObjects:qrcodeReader,nil];
widController.readers = readers;
[self.QRCodeScannerView addSubview:widController.view];
[self.view bringSubviewToFront:self.QRCodeScannerView];
break;
default:
break;
}
}
我試圖調試和走一步看一步,發現問題出在哪裏來自:
解碼器(這是基本的斑馬線邏輯的一部分)嘗試從它的代理(應該是ZXingWidgetController類)調用「failedToDecodeImage:」並崩潰(EXC_BAD_ACCESS)
在逐步調試過程中,我發現調用了ZXingWidgetController的「取消」方法。現在我不知道爲什麼這個方法被調用。在初始化並啓動解碼器後,Widget不應該停止。
我希望你們能幫忙!