【问题标题】:Why cant I dismiss the replaykit previewController in Swift?为什么我不能在 Swift 中关闭 replaykit previewController?
【发布时间】:2016-09-19 19:33:35
【问题描述】:

我在 swift 2 中使用了这段代码,它工作正常。但是现在在 Swift 3 中,当我按下取消或保存按钮时,录制完成时弹出的预览控制器窗口不会关闭。我究竟做错了什么?

func stopRecording() {

let sharedRecorder = RPScreenRecorder.shared()
sharedRecorder.stopRecording(handler: { (previewController: RPPreviewViewController?, error) in

if previewController != nil {
            print("stopped recording")

                self.previewViewController.previewControllerDelegate = self
                self.view?.window?.rootViewController?.present(previewController!, animated: true, completion: nil)
 }



func previewControllerDidFinish(previewController: RPPreviewViewController) {

previewController.dismiss(animated: true, completion: nil)

}

【问题讨论】:

    标签: swift xcode replaykit


    【解决方案1】:

    //试试这段代码希望对你有帮助:

    func startRecording() {
        let recorder = RPScreenRecorder.shared()
    
        if #available(iOS 9.0, *) {
            recorder.startRecording(withMicrophoneEnabled: true) { [unowned self] (error) in
                if let unwrappedError = error {
                    print(unwrappedError.localizedDescription)
                } else {
                    self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Stop", style: .plain, target: self, action: #selector(PreviewVC.stopRecording))
                }
            }
        } else {
            // Fallback on earlier versions
        }
    }
    
    func stopRecording() {
        let recorder = RPScreenRecorder.shared()
    
        recorder.stopRecording { [unowned self] (preview, error) in
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Start", style: .plain, target: self, action: #selector(PreviewVC.startRecording))
    
            if let unwrappedPreview = preview {
                unwrappedPreview.previewControllerDelegate = self
                self.present(unwrappedPreview, animated: true, completion: nil)
            }
        }
    }
    
    func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
        self.dismiss(animated: true, completion: nil)
    }
    

    【讨论】:

      【解决方案2】:

      你应该改变最后一行:

      previewController.dismiss(animated: true, completion: nil)
      

      到:

      dismiss(animated: true, completion: nil)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-23
        • 2011-07-26
        相关资源
        最近更新 更多