2015-10-21 2 views
0

я заявляю:аварии захвата камеры при попытке удалить 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»

Я думаю, что это что-то делать со сроками, когда моя команда удалить наложение выполняется, но не знает, как действовать дальше. Любое понимание?

ответ

0

Fixed его, добавив проверку:

if image.cameraOverlayView != nil { 
    image.cameraOverlayView = nil 
} 
Смежные вопросы