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