Closed l12ab closed 9 years ago
这个你可以自己控制,因为每个人的需求不一样。比如说比如说用一个bool值标识是否已经正在处理,如果处理中所有新进来的bardcode就不再继续处理;或者收到了之后直接self.session.stopRunning()把当前的session停掉。
self.barcodesHandler = { [unowned self] barcodes in
if self.isReadyForUpload {
return
}
let barcode = barcodes.first
if barcode == nil {
return
} else {
self.isReadyForUpload = true
self.type = barcode!.type
self.value = barcode!.stringValue
dispatch_async(dispatch_get_main_queue(), { () -> Void in
let alertView = UIAlertView(title: "Barcode captured",
message: "Barcode type: " + self.type! + " value: " + self.value!,
delegate: self,
cancelButtonTitle: "Cancel",
otherButtonTitles: "Upload")
alertView.tag = 0xCAFE
alertView.show()
})
}
}
昨天我是在 public func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) 方法前和里面加了个次数判断来解决的
var outputTimes = 0
public func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {
if self.outputTimes > 0 {
return
}else{
++self.outputTimes
}
但现在还是采用你的方法,觉得你这样更好
OK, 给star一下哦
哈哈,早就star了
受教 已following
我发现self.barcodesHandler = {barcodes in } 会执行N次,扫的码有多长就执行多少次,每次barcodes除了坐标不一样,条码的值都一样。
我想当扫码成功后,立即返回一个结果,也就是上述代码只执行一次最好,求指点该如何弄?