尝试删除叠加层时相机捕获崩溃

时间:2015-10-21 17:27:24

标签: ios swift uiimagepickercontroller overlay

我宣布:

let image = UIImagePickerController()

然后设置:

image.delegate = self
image.sourceType = .Camera
image.cameraDevice = .Front
image.allowsEditing = false

然后向相机添加叠加层:

let overlay = self.storyboard?.instantiateViewControllerWithIdentifier("OverlayVC")
image.cameraOverlayView = overlay?.view

然后展示相机:

self.presentViewController(image, animated: true, completion: nil)
然后我拍了一张照片,然后我的观察者开始拍摄:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "removeOverlay", name: "_UIImagePickerControllerUserDidCaptureItem", object: nil)

并尝试执行:

func removeOverlay() {
        image.cameraOverlayView = nil
    }

现在一切正常并且叠加在大多数时间被删除,但在随机的情况下,应用程序崩溃:

  

由于未捕获的异常而终止应用   ' NSInvalidArgumentException',原因:'源类型必须是   UIImagePickerControllerSourceTypeCamera'

我的猜测是,它与执行我的删除叠加命令但不知道如何从这里继续的时间有关。 有什么见解吗?

1 个答案:

答案 0 :(得分:1)

通过添加支票来修复它:

if image.cameraOverlayView != nil { 
    image.cameraOverlayView = nil
}