2011-11-24 4 views
5

で停止 -取得通知するときのビデオを開始または私は客観的に新しいですこんにちはのUIWebView

cを私はUIWebViewMPMoviePlayerControllerに問題を抱えている:私のUIWebViewは、(それがローカルのhtmlのhtml内の映画だしましたファイル)、私はビデオのhtml5とビデオタグを使用しています。ビデオが始まるか、私はMPMoviePlayerPlaybackDidFinishNotificationを使用してみましたがUIWebViewに....

停止したときに

は私が通知をしたいが、それは火をdoesntの...

は、私も自分のメイン UIViewControllerを作成しようとしています私自身の視点を見て、 -didAddSubview:-willRemoveSubview:を傍受する。しかし成功していません...

どのように身体はuiwebviewから通知を受ける方法を知っていますか?

答えて

19

@"MPAVControllerPlaybackStateChangedNotification"を見ることができます(オブジェクトにnilを使用)。この通知は文書化されていないので、App Storeがあなたのアプリを承認するかどうかわかりません。

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(playbackStateDidChange:) 
    name:@"MPAVControllerPlaybackStateChangedNotification" 
    object:nil]; 

通知は、そのuserInfoでキーMPAVControllerNewStateParameterを持っています。値は再生開始前に0、一時停止中に1、再生中に2、再生スライダをドラッグしているときに3と表示されます。

- (void)playbackStateDidChange:(NSNotification *)note 
{ 
    NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]); 
} 
+0

素晴らしいアドバイス - 私はしばしば、ウェブビューの映画プレーヤーが通知のために観察されないことを人々に言いました - そう、私は間違っていたと思います。 – Till

+0

それは実際にそれが観察しているムービープレーヤーを知らない。うまくいけば、観察するだけのことを望みます。 :) –

+0

ビデオの再生を一時停止に変更する方法は、通知からですか? – lakesh

1

私はこのことについて多くを探しました。ここでは、再生終了通知呼び出しを取得するための解決策が見つかりました。 iOS6.0以上のテスト済みコード。すべて@Mortenのおかげです。 viewDidLoadで

がオブザーバーに

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(playbackDidEnd:) 
name:@"MPAVControllerItemPlaybackDidEndNotification"//@"MPAVControllerPlaybackStateChangedNotification" 
object:nil]; 

を追加し、単にあなたが選択した上記でplaybackDid終了コールを取得し、あなたの条件は何でも行うことができます

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    //http://stackoverflow.com/a/12504918/860488 
    [videoView stringByEvaluatingJavaScriptFromString:@"\ 
            var intervalId = setInterval(function() { \ 
             var vph5 = document.getElementById(\"video-player\");\ 
             if (vph5) {\ 
              vph5.playVideo();\ 
              clearInterval(intervalId);\ 
             } \ 
            }, 100);"]; 
} 

- (void)playbackDidEnd:(NSNotification *)note 
{ 
//do your stuff here 
    [videoView removeFromSuperview]; 
    videoView.delegate = nil; 
    videoView = nil; 
} 

以下のようにJavaScriptコードwebViewDidFinishLoadデリゲート以下を追加します。 ハッピーコーディング!

+0

ボリュームシークバーがiOS 7に表示されない... !!何か案が??? –

+0

スウィフト版はありませんか? –

関連する問題