【问题标题】:Camera capture crash when trying to remove overlay尝试删除覆盖时相机捕获崩溃
【发布时间】:2015-10-21 17:27:24
【问题描述】:

我声明:

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'

我的猜测是,这与执行删除覆盖命令的时间有关,但不知道如何从这里开始。 有什么见解吗?

【问题讨论】:

    标签: ios swift uiimagepickercontroller overlay


    【解决方案1】:

    通过添加检查来修复它:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      相关资源
      最近更新 更多