1

我正在尝试使用 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
                }
            }
        }

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

任何想法?帮助表示赞赏。

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

2 回答 2

1

我根据https://forums.developer.apple.com/thread/62624上的回复解决了这个问题

这绝对是 iOS 中的一个错误;但是从 Info.plist 中删除“本地化本地开发区域”条目似乎可以解决此问题。

于 2017-11-15T20:21:48.533 回答
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)                    
                }
于 2017-10-23T02:35:43.810 回答