【问题标题】:iOS ZBarSDK how to detect when user dismiss QR Scanner (ViewController)iOS ZBarSDK如何检测用户何时关闭QR扫描仪(ViewController)
【发布时间】:2014-05-20 09:03:28
【问题描述】:

在我的代码中,我初始化ZBarReaderViewController 以进行二维码扫描。

我需要检测用户何时退出 QR 扫描 进程而不扫描任何二维码。 有什么方法可以知道用户何时退出该进程(通过单击视图中的取消按钮)并在 ZBarReaderViewController 被解雇后立即执行某些操作?

提前谢谢你。任何信息都非常感谢!

下面是我通过点击按钮触发二维码扫描过程的代码。

-(IBAction)nextBtn:(id)sender{

     NSLog(@"trigger QR CODE");

     if(!reader)
     {
         reader = [[ZBarReaderViewController alloc]init];
         reader.readerDelegate = self;
         reader.supportedOrientationsMask = ZBarOrientationMaskAll;

         ZBarImageScanner *scanner = reader.scanner;
            // TODO: (optional) additional reader configuration here

            // EXAMPLE: disable rarely used I2/5 to improve performance
         [scanner setSymbology: ZBAR_I25
                     config: ZBAR_CFG_ENABLE
                             to: 0];

         UIView * infoButton = [[[[[reader.view.subviews objectAtIndex:2] subviews] objectAtIndex:0] subviews] objectAtIndex:3];

         [infoButton setHidden:YES];
     }

     // present and release the controller
     [self.view addSubview:spinner];
     [self.view setUserInteractionEnabled:NO];
     [spinner startAnimating];

     [self presentViewController:reader animated:YES completion:NULL];

}

这是我在用户扫描二维码时捕获二维码的方式。

- (void) imagePickerController: (UIImagePickerController*) imageReader
  didFinishPickingMediaWithInfo: (NSDictionary*) info
 {
     // ADD: get the decode results
     id<NSFastEnumeration> results =
     [info objectForKey: ZBarReaderControllerResults];
     ZBarSymbol *symbol = nil;
     for(symbol in results)
         // EXAMPLE: just grab the first barcode
         break;


     NSString *receiptData = [NSString stringWithFormat:@"%@@-!-@%@", amountLabel.text, receiptLabel.text];

     isClosed = YES;
     NSLog(@"Completion");
     [reader dismissViewControllerAnimated:YES completion:^{
         [self BPUpdateTokenCollection:receiptData qrData:symbol.data];
         [reader.readerView stop];
          for(UIView *subViews in reader.view.subviews)
             [subViews removeFromSuperview];
         [reader.view removeFromSuperview];
         reader.view = nil;
         reader = nil;

      }];
  }

【问题讨论】:

  • 如果只能在iOS7上部署,值得一提的是,iOS最新版本包含条形码/二维码检测API,易于集成且非常可靠。如果你不能,还有另一个库是 zxing github.com/TheLevelUp/ZXingObjC 的用户友好包装器
  • 目前我的目标是 iOS 7 及更高版本。所以基本上这将是实现 QR 扫描仪的一种很好的替代方法。感谢您的信息
  • 一个小教程,了解如何实现它shinobicontrols.com/blog/posts/2013/10/11/…

标签: ios objective-c qr-code zbar-sdk zbar


【解决方案1】:

试试这个

@protocol ZBarReaderDelegate <UIImagePickerControllerDelegate>



ZBarReaderDelegate is nothing but UIImagePickerControllerDelegate

- (void) imagePickerControllerDidCancel: (UIImagePickerController*) picker{

    //Cancelled 

    //Do your stuff here


}

【讨论】:

  • 这解决了我的问题。一直在寻找这个几个小时。谢谢!竖起大拇指!
猜你喜欢
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
相关资源
最近更新 更多