2017-10-03 4 views
2

次のコードを使用して画面を記録しています。それは、ios10のために正常に動作してios9リプレイキットが動作しないIPAD IOS11 BUG

@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完了(閉鎖)ブロックが決して呼び出されない
条件if RPScreenRecorder.shared().isAvailable {はまた、私はあなたと同じ問題を抱えていたこと

enter image description here

enter image description here

+0

あなたは、物理デバイスを試着しましたか?おそらく、[https://stackoverflow.com/questions/40024316](https://stackoverflow.com/questions/40024316/reading-from-public-effective-user-settings-in-ios-10) – mato

+0

@matoに関連しています応答をありがとうSimulatorでサポートされていないスクリーンレコーディング、提供されたリンクには問題はありません –

答えて

2

について、誰もが知っていれば、私を助けてください

に聞かせすることができますので、私は、iOS 11.0.2へのアップデートにthinkedそれは私のために働いた!それがあなたにも役立つことを願っています。

念のため、ここで私の方法は、次のとおりです。RPPreviewViewControllerDelegateの

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) 
        } 
       } 
      } 
    } 

方法:

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() 
     } 
    } 
関連する問題