2016-09-14 2 views
1

ReplayKitのネイティブスクリーンレコーディング機能をユニティアプリケーションと一緒に使用しようとしているので、ネイティブスクリーンレコーディングと共有UIの利点があります。Unityプラグインを使用してiOS ReplayKitをUnity 5.3.4で使用しているときにPreviewViewControllerを閉じることができない

Objective-C(++)で書かれたネイティブコードを呼び出すUnityプラグインを作成しましたが、RPPreviewViewControllerを破棄するまですべてがうまくいくようです。

Unity UIの録音ボタンがReplayKit startRecordingWithMicrophoneEnabled:handler機能を起動し、停止ボタンがRPPreviewViewControllerインスタンスをハンドラに返すstopRecording関数を正しく呼び出します。

RPPreviewViewControllerでは、「保存」ボタンが正しくカメラロールに保存され、共有ボタンが正常に機能します。しかし、「取り消し」(コンテキストに応じて「完了」)をタップすることは何もしません。ここで

は、コードがRPPreviewViewControllerを扱う私のstopRecordingWithHandler:機能である:あなたが見ることができるように、私はRPPreviewViewControllerDelegateのためのプロトコルを実装し、その上にビューを解任しようとしている

- (void) stopRecording { 

    [[RPScreenRecorder sharedRecorder] stopRecordingWithHandler:^(RPPreviewViewController *previewController,NSError *error){ 
    if (previewController != nil) { 

     previewController.previewControllerDelegate = self; 

     [previewController willMoveToParentViewController:rootView]; 

     [rootView addChildViewController:previewController]; 

     previewController.view.frame = CGRectMake(0.0, 0.0, rootView.view.bounds.size.width, rootView.view.bounds.size.height); 

     [rootView.view addSubview:previewController.view]; 

     self.presentedController = previewController; 

    } else { 
     NSString *msg = [NSString stringWithFormat:@"The screen recorder is unavailable:\n%@", [error localizedDescription]]; 
     [self displayMessageDialog:msg]; 
    } 
}]; 
} 

// Implementation of PreviewControllerDelegate protocol 
- (void)previewControllerDidFinish:(RPPreviewViewController *)previewController { 

    [previewController willMoveToParentViewController:nil]; 

    [previewController.view removeFromSuperview]; 

    [previewController removeFromParentViewController]; 

    self.presentedController = nil; 

} 

クローズイベントですが、デリゲート関数が呼び出されることはありません。

私は何が間違っているのか分かりません。私は間違ってコーディングしてしまったのでしょうか、Unityと一緒に使用すると複雑ですか?

私は何かのポインタが大いに感謝されるように立ち往生しています!

UPDATE: rootViewはので、ここで上記のコードで使用されているが、私はinit機能でその参照を取得した方法です:

static UIViewController *rootView; 

- (ReplayKitController*) init { 
    self = [super init]; 

    if(self && rootView == nil) { 
     rootView = [[UIApplication sharedApplication] windows][0].rootViewController; 
    } 

    return self; 
} 

答えて

0

私は最終的にいくつかのことを試した後、それをソートしますが、私は問題だったと信じてどのように私は

previewController.previewControllerDelegate = self; 

previewControllerDelegateを設定し

0123を使用するように変更するので持っていました。

これはうまくいくようです。

私の質問をチェックアウトしたすべての人に感謝し、これが誰かを助けることを願っています!

関連する問題