Методы AVCapturePhotoCaptureDelegate не вызываются каждый раз - PullRequest
0 голосов
/ 19 июня 2020

Я создаю собственную камеру и получаю нестабильные результаты. Когда я пытаюсь сделать снимок, я иногда не получаю ожидаемых обратных вызовов делегата. Например, вот мои методы делегата:

func photoOutput(_ output: AVCapturePhotoOutput, willBeginCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    print("will begin")
}

func photoOutput(_ output: AVCapturePhotoOutput, willCapturePhotoFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    print("will capture")
}

func photoOutput(_ output: AVCapturePhotoOutput, didCapturePhotoFor resolvedSettings: AVCaptureResolvedPhotoSettings) {
    print("did capture")
}

func photoOutput(_ output: AVCapturePhotoOutput, didFinishCaptureFor resolvedSettings: AVCaptureResolvedPhotoSettings, error: Error?) {
    print("finished capture")
}

func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
    print("finish process")
}

У меня есть кнопка, которая запускает следующий метод:

func capture() {
    print("capture called")
    let settings = AVCapturePhotoSettings()
    captureOutput.capturePhoto(with: settings, delegate: self)
}

Каждый раз, когда этот метод вызывается, я ожидаю следующего вывода в консоль:

capture called

will begin
will capture
did capture
finish process
finished capture
image set

Однако с вероятностью 50/50 я получаю только следующий результат:

capture called
did capture

Что здесь происходит?

...