0

サブクラス化されたMPMoviePlayerViewControllerを使用してビデオクリップを再生するアプリがあり、ユーザーがアプリを離れたとき(バックグラウンドに入ったとき)にムービープレーヤーが閉じられるようにしたい。これが必要なのは、アプリに再度アクセスしたときに、ムービーURLが正しく読み込まれていないように見えるため、常に読み込まれている空白のムービープレーヤーが表示されるためです。

通常、[完了]ボタンが押されたときに[selfdismissMoviePlayerViewControllerAnimated]を使用してムービープレーヤーを閉じます。

アプリケーションがアクティブを辞任した(またはバックグラウンドに移動した)ときにプレーヤーを却下する適切な方法は何ですか?

4

2 に答える 2

2

アプリケーションがバックグラウンドに送信されようとしているときに、通知を使用して MPMoviePlayerViewController を「クリーンアップ」することになりました。これにより、アプリ デリゲート以外のクラスからアプリがバックグラウンドに送られようとしている時期を検出できます。

そのため、ムービー プレーヤーを作成するときに、アプリケーションがバックグラウンドに移行したときに "クリーンアップ" 関数を呼び出すオブザーバーを追加します。

(サイドノート - ビデオが終了した後にムービービューが自動的に閉じないようにするオブザーバーも使用します。そのようにして、ユーザーは「完了」ボタンを押す必要があります。そのボタンはmoviePlayerCleanupメソッドも呼び出します。これにより、オブザーバーが常に適当に削除)

- (IBAction)buttonVideo:(id)sender {        

    // Register Movie Player for UIApplicationWillResignActiveNotification
    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(moviePlayerCleanup) name: UIApplicationWillResignActiveNotification object: nil];

/*...set video URL, options, add to subview, etc etc here....*/
}
-(void)moviePlayerCleanup{
    // Remove the movie player view controller from the ApplicationWillResign notification observers
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil];    
    //Dismiss view
    [self dismissMoviePlayerViewControllerAnimated];
}
于 2012-07-18T16:44:46.163 に答える
0

さて、検索した後、私はここでこの答えを見つけました: アプリケーションがバックグラウンドに入るときにモーダル ビューコントローラーを却下する基本的に、ビューコントローラーの却下を呼び出すセレクターを使用して、UIApplicationDidEnterBackgroundNotification通知のNSNotificationCenterオブザーバーを設定します。

答えを見てください、それはコードスニペットを持っています。

これがうまくいくことを願っています。

于 2012-07-17T17:43:08.230 に答える