ReplayKit stopRecording没有第一次进入

时间:2017-10-11 12:15:20

标签: ios swift replaykit

我正在尝试使用ReplayKit视频捕获ARKIt应用。我有一个录制按钮,按下时变为红色并开始录制,然后再次按下变为白色并停止录制。

但是stopRecording方法从未在第一次工作。

如果recorder.isAvailable {             recorder.delegate = self

        if recorder.isRecording {
            print("Recorder is recording...")

            // Stop recording

            recorder.stopRecording { previewController, error in
                print("Stop recording...")
                self.recordImage.color = UIColor.white
                self.recordImage.colorBlendFactor = 1

                if let controller = previewController {
                    controller.previewControllerDelegate = self
                    self.present(controller, animated:true, completion:nil)
                }
            }
        }
        else {

            // Start recording

            recorder.startRecording { error in
                print("Starting to record…")

                if error == nil {
                    print("Start Recording…")
                    self.recordImage.color = UIColor.red
                    self.recordImage.colorBlendFactor = 1
                }
            }
        }

第一次按下时,我可以看到录制开始了。然后,当我再次按下时,我可以看到记录了record.isRecording,但是在recorder.stopRecording中的块不起作用。我必须再按一次开始录音,然后在录音机之前再次停止。输入停止录音。

有什么想法吗?感谢帮助。

Press Record!
Starting to record…
Start Recording…
Press Record!
Recorder is recording...

2 个答案:

答案 0 :(得分:1)

我根据https://forums.developer.apple.com/thread/62624

的回复修复了此问题

这绝对是iOS中的一个错误;但删除"本地化本机开发区域"来自Info.plist的条目似乎解决了这个问题。

答案 1 :(得分:0)

您使用的是哪个iOS版本?我已经看到了通常在第一次尝试时没有调用完成处理程序的情况,但之后又工作了。这在iOS 9上发生了很多,在11.0中也是如此,但在11.0.3中似乎更好。

我不确定您是否在iPad上试用此功能,但上面的代码无法在iPad上运行。您需要设置演示文稿样式。

   if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.phone {
                    self.present(controller, animated: true, completion: nil)
                }
                else {
                    controller.popoverPresentationController?.sourceRect = self.recordingButton.bounds
                    controller.popoverPresentationController?.sourceView = self.view
                    controller.modalPresentationStyle = UIModalPresentationStyle.popover
                    controller.preferredContentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
                    self.present(controller, animated: true, completion: nil)                    
                }