ios - 停止 ZxingObjC 中的连续扫描

标签 ios zxing scanning

我正在使用 Zxing 扫描数据矩阵代码。我从 github 导入了 zxing 。当应用程序启动时,只要将相机放在条形码上,相机就会重复扫描代码。一旦条形码被解码,我想停止扫描,我想执行一项任务,然后再次开始扫描。我停止了扫描但无法启动它。这是我为停止扫描所做的工作。

这是我的 ViewController.m

- (void)captureResult:(ZXCapture *)capture result:(ZXResult *)result {
if (!result) return;

// We got a result. Display information about the result onscreen.
NSString *formatString = [self barcodeFormatToString:result.barcodeFormat];
NSString *display = [NSString stringWithFormat:@"Scanned!\n\nFormat: %@\n\nContents:\n%@",  formatString, result.text];

//here i called the stop method 
 [self.capture stop];

//i want to start scanning again ,so i created this method
 [self afterScan];
}

现在一旦条形码被解码,相机就会停止。现在我想实现这个方法

 -(void) afterScan{

 // UIAlertVIew " code is decoded "
  // store in database

 // again start scanning
      [self.capture start];

  }

问题是相机没有重新启动。

ZXing中的启动和停止方法如下:

- (void)start {
if (self.hardStop) {
return;
}

if (self.delegate || self.luminanceLayer || self.binaryLayer) {
[self output];
}

if (!self.session.running) {
static int i = 0;
if (++i == -2) {
  abort();
}

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  [self.session startRunning];
});
}
 self.running = YES;
}

 - (void)stop {
  if (!self.running) {
 return;
 }

 if (self.session.running) {
 [self.layer removeFromSuperlayer];

  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  [self.session stopRunning];
    //[self.session startRunning];
  });
 }

 self.running = NO;


 }

你能帮我解决这个问题吗。

提前致谢。

最佳答案

当我这样做时,我使用了一个 BOOL 属性。

所以像这样在你的 View Controller 中放一个:

@property (nonatomic, assign) BOOL hasScannedResult;

然后您需要一个 if() 条件检查以确保您的方法不会被重复调用。

- (void)captureResult:(ZXCapture *)capture result:(ZXResult *)result {

    if(self.hasScannedResult == NO)
    {

        self.hasScannedResult = YES;

        // do something with result
    }
}

现在当你想再次扫描时,重置 BOOL 标志:

-(void)startScan
{
    // reset BOOL flag to enable scanning
    self.hasScannedResult = NO;

    // open the scanner
}

关于ios - 停止 ZxingObjC 中的连续扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551076/

相关文章:

ios - Xcode 5.1.1 中没有自动下划线 ivar

iphone - 当相机前面有一些移动时,是否可以通过编程方式从我的 iPhone 拍照?

ios - 包装器-UIVIew 中的 MPVolumeView

android - 编译android zxing release 错误不调试

android - "com.google.zxing.client.android.SCAN"在 android 中如何工作?

windows-phone-7 - WP7.5 中的实时条码扫描

iphone - PhoneGap 应用程序在模拟器上运行,但在 iPhone 设备上无法正常运行

java - 在 android studio 中添加 ZXing android 项目作为库

ios - Card.io sdk 未读取到期日期

java - Java 上的条码扫描器实现