Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ReplayKit stopRecording不是第一次输入的_Ios_Swift_Replaykit - Fatal编程技术网

Ios ReplayKit stopRecording不是第一次输入的

Ios ReplayKit stopRecording不是第一次输入的,ios,swift,replaykit,Ios,Swift,Replaykit,我正在尝试使用ReplayKit视频捕获ARKIt应用程序。我有一个录制按钮,按下时变为红色并开始录制,然后再次按下时变为白色并停止录制 但是停止录制的方法在第一次使用时从未奏效 如果recorder.i可用{ recorder.delegate=self if recorder.isRecording { print("Recorder is recording...") // Stop recording

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

但是停止录制的方法在第一次使用时从未奏效

如果recorder.i可用{ 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...

您使用的是哪个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)                    
                }

我根据上的回复修复了此问题


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

我在11.0.3下再次测试,recorder.stopRecording似乎没有进入完成处理程序。