Необычное решение, но, похоже, оно временно исправило проблему для меня. Ура!

ние проблемы

Обработчик завершения startRecording () никогда не вводится, даже если было показано всплывающее окно «Разрешить запись экрана в $ AppName». Иногда появляется всплывающее окно «Разрешить запись экрана в $ AppName». Это также происходит, когда я удаляю приложение, перезагружаю устройство и выполняю очистку / сборку проекта. Я использую iPad Air 2 с iOS 11 и Xcode 9.

Исследовательская работа

Эта проблема, казалось, была проблемой и в более ранних версиях, см. Здесь:replaykit startrecording иногда никогда не входит в обработчик завершения Я не могу согласиться с тем, что отключение Wi-Fi или стабильное подключение к Интернету решают эту проблему, и эта проблема не решается в iOS 11.

Вот код, который я использую:

@IBAction func recordButtonTapped(_ sender: UIButton) {
    if !recorder.isRecording {
        startRecording(sender)
    } else {
        stopRecording(sender)
    }
}

private func startRecording(_ sender: UIButton) {
    guard recorder.isAvailable else {
        print("Recording is not available at this time.")
        // Display UI for recording being unavailable
        return
    }

    recorder.startRecording(handler: { (error) in
        guard error == nil else {
            print("There was an error starting the recording.")
            print(error!)
            return
        }

        print("Started Recording Successfully")
        DispatchQueue.main.async {
            sender.setTitle("Stop Recording", for: .normal)
            sender.setTitleColor(.red, for: .normal)
        }
    })
}

Ответы на вопрос(1)

Ваш ответ на вопрос