2017-10-11 2 views
1

ReplayKit을 사용하여 ARKIt 앱을 캡처하려고합니다. 녹음 버튼을 누르면 빨간색으로 바뀌고 녹음이 시작되고 다시 누르면 흰색이되고 녹음이 중지됩니다.ReplayKit stop 녹화가 처음으로 입력되었습니다.

그러나 stopRecording 메소드는 처음으로 작동하지 않았습니다.

recorder.isAvailable { recorder.delegate = 자기

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

처음 누를 때, 나는 녹음을 볼 수 있습니다 시작합니다. 그럼 내가 다시 누르면 recorder.isRecording이 입력되었지만 recorder.stopRecording의 블록이 작동하지 않는 것을 볼 수 있습니다. 녹음을 시작하려면 다시 누르십시오. 녹음기 전에 다시 멈춰야합니다. 녹음 블록이 입력되었습니다.

아이디어가 있으십니까? 도움을 주시면 감사하겠습니다.

Press Record! 
Starting to record… 
Start Recording… 
Press Record! 
Recorder is recording... 

답변

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

11.0.3에서 다시 테스트했으며 recorder.stopRecording은 완료 핸들러로 들어가는 것 같지 않습니다. –

0

나는 https://forums.developer.apple.com/thread/62624

이 확실히 아이폰 OS의 버그의 응답에 따라이 문제를 해결; Info.plist에서 "Localization native development region"항목을 제거하는 것이이 문제를 해결하는 것으로 보입니다.