嗨,我正在开发一个 QR 码阅读器应用程序,并且在关闭 ZBarReaderViewController 时遇到了很多麻烦。我有一个带有按钮的视图控制器,它可以创建阅读器并呈现它。
- (IBAction)scanAction:(id)sender {
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
[reader.scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
reader.readerView.zoom = 1.0;
// [self presentViewController:reader animated:YES completion:nil];
[self presentModalViewController:reader animated:YES];
}
然后在读者代表上我正在这样做(我评论了结果处理行,但我仍然得到同样的错误):
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
// id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
//
// ZBarSymbol *symbol = nil;
// NSURL *url;
// NSString * textUrl;
//
// for(symbol in results){
// textUrl = symbol.data;
// NSLog(@"%@",textUrl);
// url = [NSURL URLWithString:textUrl];
// break;
// }
//
// if (url != nil) {
//// NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
//// [self.webView loadRequest:requestObj];
// [self.urlLabel setText:textUrl];
// }
// [reader dismissViewControllerAnimated:NO completion:nil];
[reader dismissModalViewControllerAnimated:YES];
}
这是我随机得到的错误:
QR reader[10159:907] Warning: Attempt to dismiss from view controller <ViewController: 0x1ed4c930> while a presentation or dismiss is in progress!
有时它会在没有任何警告的情况下扫描并关闭,但是当我收到该警告时,读者会继续扫描,并且代表会再次被调用,直到不再显示警告为止。
我尝试了其他有同样问题的用户的一些建议,但在我的特定情况下不起作用:
- 使用dismissModalViewController 而不是已弃用的模态视图。
- 围绕dismissViewControllerAnimated方法的完成块中的结果处理。
谢谢阅读 :)