可以将AVCaptureFileOutputRecordingDelegate添加到子类UIView吗?

时间:2016-05-31 22:33:55

标签: ios swift avcapturesession avcapturedevice

我在自定义UIView中创建捕获会话时遇到问题。我像这样设置委托

class Camera: UIView, AVCaptureFileOutputRecordingDelegate, AVAudioRecorderDelegate {
}

然后我设置了所有内容并像这样设置代理

self.recordingDelegate? = self

    captureSession.sessionPreset = AVCaptureSessionPresetHigh
    let devices = AVCaptureDevice.devices()
    for device in devices {
        if (device.hasMediaType(AVMediaTypeVideo)) {
            if(device.position == AVCaptureDevicePosition.Back) {
                captureDevice = device as? AVCaptureDevice
                if captureDevice != nil {
                    beginSession()
                }
            }
        }
    }

一切顺利。但是,在beginSession函数中:

    func beginSession() {
        let err : NSError? = nil
        do {
            self.captureSession.addInput(try AVCaptureDeviceInput(device: self.captureDevice!))
        }
        catch {
            print("dang")
        }
        if err != nil {
            print("error: \(err?.localizedDescription)")
        }

...

当我尝试添加捕获设备输入时,抛出了捕获,因为它没有添加,我无法弄清楚原因。

我目前正在使用的所有代码在我在UIViewController中使用之前工作正常但是当我将其切换到UIView的子类时它停止工作。如果需要更多代码,我们将不胜感激,谢谢!谢谢!

1 个答案:

答案 0 :(得分:2)

我认为我正在使用的iOS设备没有启用相机因为某些原因导致输入无法添加导致预览图层无法捕获任何数据