Rubymotion - 结束派遣::队列

时间:2014-03-18 20:58:21

标签: ios ruby queue barcode rubymotion

我是整个iOS开发的新手,包括objective-c和rubymotion。所以这可能是一个愚蠢的问题。

我正在尝试从相机读取条形码,我可以使用AVCaptureMetadataOutput读取它

所以我有以下代码:

@queue = Dispatch::Queue.new('com.scanner.app')
@output = AVCaptureMetadataOutput.alloc.init
@output.setMetadataObjectsDelegate self, queue: @queue.dispatch_object

然后调用以下方法。

def captureOutput(captureOutput, didOutputMetadataObjects: metadataObjects, fromConnection: connection)

@queue.async do
    NSLog("#{metadataObjects[0].stringValue}")
end

收到条形码后,如何退出此队列并继续执行程序?我知道这是一些先进的东西,我实际上只是用这两天需要快速模拟一些东西。

我甚至不确定这是否是从相机读取条形码的正确方法。

当用户点击按钮导航控制器将其加载时,将触发此控制器。

self.navigationController.pushViewController(ScannerController.alloc.init, animated: true)

一旦找到条形码,我还能回来吗?如果有人能指出我正确的方向,那将非常感激。

提前谢谢!!

1 个答案:

答案 0 :(得分:2)

管理解决它将使用以下代码:

Dispatch::Queue.main.async do
  if metadataObjects.any?
    self.barcode = metadataObjects[0].stringValue
    @queue.suspend!

    process_barcode

  end
  true
end

可能不是最好的方式,但有效。