iOS ZBarSDK 如何检测用户何时关闭二维码扫描器(ViewController)

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

在我的代码中,我初始化了 ZBarReaderViewController 用于二维码扫描。

我需要检测用户何时退出QR 扫描 过程而不扫描任何二维码。 有什么方法可以让我知道用户何时退出该进程(通过单击 View 中的取消按钮)并在 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;

      }];
  }

最佳答案

试试这个

@protocol ZBarReaderDelegate <UIImagePickerControllerDelegate>



ZBarReaderDelegate is nothing but UIImagePickerControllerDelegate

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

    //Cancelled 

    //Do your stuff here


}

关于iOS ZBarSDK 如何检测用户何时关闭二维码扫描器(ViewController),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23755362/

相关文章:

objective-c - 中文日期的 NSDateFormatter

ios - 检查字典数组中的值

ios - 改变tableHeaderView框架,tableview的contentSize每次增加0.5

ios - UITableView reloadRowsAtIndexPaths 不断重新加载单元格

objective-c - 在objective-c中创建现在的时间戳作为NSNumber

c# - 如何旋转矩形C#中的文本

ios - 更改 SpriteKit 节点的纹理

objective-c - NSMutableDictionary 添加子项

android - Android 中的 QR 码 Zxing 库

ios - 在swift ios中扫描后如何获取二维码图像?