您好我是Objective-c
的新手我对UIWebView
和MPMoviePlayerController
有疑问:我的UIWebView
在html中有一部电影(它是本地html文件),我&# 39; m使用html5和视频的视频标签。
我希望在UIWebView
....
我尝试过使用MPMoviePlayerPlaybackDidFinishNotification
,但它没有开火......
我还试图让我的主要UIViewController
视图成为我自己的视图,并拦截-didAddSubview:
和-willRemoveSubview:
。但没有成功......
是否有任何机构知道如何从uiwebview
发送通知
答案 0 :(得分:19)
您可以观察@"MPAVControllerPlaybackStateChangedNotification"
(对象使用nil
)。此通知未记录,因此我不知道App Store是否会批准您的应用。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackStateDidChange:)
name:@"MPAVControllerPlaybackStateChangedNotification"
object:nil];
通知的MPAVControllerNewStateParameter
中包含密钥userInfo
。播放开始前的值似乎为0,暂停时为1,正在播放时为2,拖动播放滑块时为3(暂时)。
- (void)playbackStateDidChange:(NSNotification *)note
{
NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]);
}
答案 1 :(得分:1)
我搜索了很多关于这个......这是我找到的用于获取播放结束通知呼叫的解决方案。 在iOS6.0及更高版本上经过测试的代码。一切都归功于 @Morten 。
在viewDidLoad中添加观察者
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackDidEnd:)
name:@"MPAVControllerItemPlaybackDidEndNotification"//@"MPAVControllerPlaybackStateChangedNotification"
object:nil];
然后只需添加以下javascript代码webViewDidFinishLoad
委托,如下所示
- (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;
}
您将在上面选择的内容中获得playbackDid结束通话,并且可以执行您的要求。 快乐编码!!