controller - 无法关闭 imagePickerController didFinishPickingMediaWithInfo 中的 ZBarReaderViewController

标签 controller warnings barcode dismiss zbar

嗨,我正在开发一个 QR 码阅读器应用程序,并且在关闭 ZBarReaderViewController 时遇到了很多麻烦。我有一个带有按钮的 View Controller ,它可以创建阅读器并呈现它。

- (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方法的完成 block 中的结果处理。

  • 谢谢阅读 :)

    最佳答案

    有同样的问题, performSeletor:withObject:afterDelay: 对我来说很好。

    - (void)imagePickerController:(UIImagePickerController *)reader didFinishPickingMediaWithInfo:(NSDictionary *)info {
         // do some userful stuff
    
         [self performSelector:@selector(dismissZBar) withObject:nil afterDelay:1];
    }
    
    - (void)dismissZBar {
         [self.presentedViewController dismissViewControllerAnimated:YES completion:^{
              // do some stuff after dismiss
          }];
    }
    

    关于controller - 无法关闭 imagePickerController didFinishPickingMediaWithInfo 中的 ZBarReaderViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15838125/

    相关文章:

    java - 获取调用页面的URL Java

    android - 如何在文件级别重新启用已禁用的 Android Lint 警告

    php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

    java - 在 128c 条码符号体系中对字符串进行编码

    android - 将条形码转换为产品名称

    php - 如果 Controller 文件在 Linux 上为小写,CodeIgniter 返回 404

    php - 类 App\Http\Controllers\WelcomeController 不存在

    javascript - 如何使用 node-hid 库将来自 device.on() 方法的数据响应转换为字符串

    spring-mvc - Controller 扩展接口(interface)时无法识别带注释的 Spring-MVC Controller

    java - Java 中的运行时类型检查和转换