ios - 重播套件无法正常工作 IPAD IOS11 BUG

标签 ios swift ios11 replaykit

我正在使用以下代码来录制屏幕。它在 ios10ios9

上运行良好
 @IBAction func btnRecordTapped(_ sender: UIButton) {

    if RPScreenRecorder.shared().isAvailable {


        if #available(iOS 10.0, *) {
            RPScreenRecorder.shared().startRecording(handler: { (error) in
                guard error == nil else {
                    print("Record failed with error \(error!.localizedDescription)")
                    return
                }

                DispatchQueue.main.async {
                    sender.removeTarget(self, action: #selector(self.btnRecordTapped(_:)), for: .touchUpInside)
                    sender.addTarget(self, action: #selector(self.stoprecording(button:)), for: .touchUpInside)

                    sender.setTitle("Stop", for: .normal)
                    sender.setTitleColor(.red, for: .normal)


                }


            })
        } else {

            RPScreenRecorder.shared().startRecording(withMicrophoneEnabled: false, handler: { (error) in

                guard error == nil else {
                    print("Record failed with error \(error!.localizedDescription)")
                    return
                }

                DispatchQueue.main.async {
                    sender.removeTarget(self, action: #selector(self.btnRecordTapped(_:)), for: .touchUpInside)
                    sender.addTarget(self, action: #selector(self.stoprecording(button:)), for: .touchUpInside)

                    sender.setTitle("Stop", for: .normal)
                    sender.setTitleColor(.red, for: .normal)


                }

            })
        }
    } else {
        print("Screen Reocrder not availble")
    }

}

我在 ios10ios9 中可以看到权限提示,但在 ios11 中看不到

ios11 完成(关闭) block 从不调用
我已经验证了方法调用正确 if 条件 if RPScreenRecorder.shared().isAvailable { 也允许让进来

如果有人知道请帮助我

enter image description here

enter image description here

最佳答案

我遇到了和你一样的问题,所以我想更新到 iOS 11.0.2,它对我有用!希望它也能帮助你。

以防万一,这是我的方法:

let recorder = RPScreenRecorder.shared()

@IBAction func recordingAction(_ sender: Any) {
        if recorder.isRecording {
            stopRecordAction()
        } else {
            startRecordAction()
        }
}

func startRecordAction() {
     recorder.startRecording{ (error) in
            if let error = error {
               print("❗️",error)
             }
      }
}

func stopRecordAction() {
            recorder.stopRecording{ (previewVC, error) in
                if let previewVC = previewVC {
                    previewVC.previewControllerDelegate = self
                    self.present(previewVC, animated: true, completion: nil)
                    if let error = error {
                        print("❗️",error)
                    }
                }
            }
    }

RPPreviewViewControllerDelegate的方法:

func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
        dismiss(animated: true, completion: nil)
    }

    func previewController(_ previewController: RPPreviewViewController, didFinishWithActivityTypes activityTypes: Set<String>) {
        /// This path was obtained by printing the actiong captured in "activityTypes"
        if activityTypes.contains("com.apple.UIKit.activity.SaveToCameraRoll") {
            recordFinshedMessage()
        }
    }

关于ios - 重播套件无法正常工作 IPAD IOS11 BUG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46541509/

相关文章:

ios - 是否建议在 iPhone X 虚拟主页按钮旁边放置一个按钮?

ios - 在基类中使用泛型函数

ios - 在 iPhone 上剪切视频

ios - Swift 3.0 中的 Spotify SDK : how to know when a song ends

ios - 从 Collection View 传递到 View Controller 的简单图像数据失败

swift - 使用 JTAppleCalender 和 CoreData 进行习惯跟踪

macos - 在 Swift 中运行 Shell 命令

ios - 如何在 html 文件上链接本地 pdf 文件 - html 文件显示在 UIWebView

swift - 同时访问0x1c0a7f0f8,但在Xcode 9 beta 4上修改需要独占访问报错

ios - 禁用 iOS 11 大标题 "snapping"