AVCaptureMetadataOutputObjectsDelegate function is not a call

I am trying to create a barcode scanner with swift on ios 8, the problem is that I cannot get the result of the delegate capture function as below.

class SecondViewController: UIViewController , AVCaptureMetadataOutputObjectsDelegate {

    var captureSession  =   AVCaptureSession()
    var previewLayer    =   AVCaptureVideoPreviewLayer()
    var captureDevice : AVCaptureDevice?
    var metaDataOutput = AVCaptureMetadataOutput()

    override func viewDidLoad() {

        super.viewDidLoad()
    }

    @IBAction func ScanBarcode(sender: UIButton) {

       captureSession.sessionPreset = AVCaptureSessionPresetHigh

       let devices = AVCaptureDevice.devices()

       // device
       for device in devices {
        // Make sure this particular device supports video
        if (device.hasMediaType(AVMediaTypeVideo)) {
            // Finally check the position and confirm we've got the back camera
            if(device.position == AVCaptureDevicePosition.Back) {
                captureDevice = device as? AVCaptureDevice
            }
        }
      }

      if captureDevice != nil {

        var err : NSError? = nil

        //input
        var input : AVCaptureDeviceInput = AVCaptureDeviceInput(device: captureDevice, error: &err)

        if err != nil {
            println(" we have error: \(err?.localizedDescription)")
        }

        //preview layer
        previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)

        var bounds:CGRect = self.view.layer.bounds
        previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
        previewLayer.bounds = bounds
        previewLayer.position = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds))

        cameraView.layer.addSublayer(previewLayer)

        //Session
        if captureSession.canAddOutput(metaDataOutput) && captureSession.canAddInput(input)
        {
            println("adding out put to session ")
             captureSession.addInput(input)
             captureSession.addOutput(metaDataOutput);
        }

        //output
        let metadataQueue = dispatch_queue_create("com.1337labz.featurebuild.metadata", nil);

        metaDataOutput.setMetadataObjectsDelegate( self, queue: metadataQueue)
    metaDataOutput.metadataObjectTypes = [AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code]


        cameraView.hidden = false
        captureSession.startRunning()

        println("array \(metaDataOutput.metadataObjectTypes)")


      }
      else{
        println("no device found")
      }
  }

      

this function is not called i think this is where you get data

func captureOutput(captureOutput: AVCaptureOutput!,didOutputMetadataObjects metadataObjects[AnyObject]!,fromConnection connection:AVCaptureConnection!){

      println("processing output")
    }

      

edit: it works, I was just trying to scan the wrong barcodes

+3


source to share





All Articles