2017-10-03 6 views
2

Ich verwende folgenden Code zum Aufzeichnen des Bildschirms. Es funktioniert gut für ios10 und ios9Replay-Kit Funktioniert nicht IPAD IOS11 FEHLER

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

} 

Ich sehe für die Erlaubnis, in ios10 und ios9 Prompt kann aber nicht für ios11

ios11 Completion (Verschluss) Block ruft nie
Ich habe bereits überprüft, ob die Methode ordnungsgemäß aufruft, wenn die Bedingung if RPScreenRecorder.shared().isAvailable { ermöglicht auch in

Bitte helfen Sie mir zu lassen, wenn jemand darüber wissen

enter image description here

enter image description here

+0

Haben Sie versucht, auf einem physischen Gerät? Vielleicht verwandt mit [https://stackoverflow.com/questions/40024316](https://stackoverflow.com/questions/40024316/reading-from-public-effective-user-settings-in-ios-10) – mato

+0

@mato Vielen Dank für die Antwort. Die Bildschirmaufzeichnung wird im Simulator nicht unterstützt. Der angegebene Link hat nichts mit dem Problem zu tun –

Antwort

2

ich das gleiche Problem wie Sie hatte, so dass ich thinked auf iOS 11.0.2 bei der Aktualisierung und es hat für mich funktioniert! Hoffe es hilft dir auch.

Nur für den Fall, hier sind meine Methoden:

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

Methoden der 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() 
     } 
    } 
Verwandte Themen