Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 成功扫描后停止AVF_Ios_Swift_Xcode - Fatal编程技术网

Ios 成功扫描后停止AVF

Ios 成功扫描后停止AVF,ios,swift,xcode,Ios,Swift,Xcode,我正在为iOS 10构建一个带有Swift 3(Xcode 8.1)的二维码扫描应用程序,我正在使用AVFoundation框架。有人知道如何在成功扫描后停止扫描,并在点击屏幕或其他东西后重新启动扫描仪吗 编辑: 下面是我的代码片段(没有关于返回值的代码): 在委托方法中尝试此操作 func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from

我正在为iOS 10构建一个带有Swift 3(Xcode 8.1)的二维码扫描应用程序,我正在使用AVFoundation框架。有人知道如何在成功扫描后停止扫描,并在点击屏幕或其他东西后重新启动扫描仪吗

编辑: 下面是我的代码片段(没有关于返回值的代码):


在委托方法中尝试此操作

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) {

if metadataObjects == nil || metadataObjects.count == 0 {
    qrCodeFrameView?.frame = CGRect.zero
    return
}

let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject


if supportedBarCodes.contains(metadataObj.type) {

    let barCodeObject = videoPreviewLayer?.transformedMetadataObject(for: metadataObj)
    qrCodeFrameView?.frame = barCodeObject!.bounds
    print(metadataObj.stringValue)

    // Stop capture session 
    videoPreviewLayer?.isHidden = true
    qrCodeFrameView?.isHidden = true
    self.captureSession?.stopRunning()
}

您能分享一些代码吗?@MuseerAnsari在问题中添加了代码。请检查我的答案,如果您有任何问题,请告诉我,谢谢!欢迎并祝您愉快:)
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) {

if metadataObjects == nil || metadataObjects.count == 0 {
    qrCodeFrameView?.frame = CGRect.zero
    return
}

let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject


if supportedBarCodes.contains(metadataObj.type) {

    let barCodeObject = videoPreviewLayer?.transformedMetadataObject(for: metadataObj)
    qrCodeFrameView?.frame = barCodeObject!.bounds
    print(metadataObj.stringValue)

    // Stop capture session 
    videoPreviewLayer?.isHidden = true
    qrCodeFrameView?.isHidden = true
    self.captureSession?.stopRunning()
}