sol*_*sol 5 iphone mpmovieplayercontroller ipad
根据Apple的MPMoviePlayerController doc:
MPMoviePlayerPlaybackDidFinishNotification - 如果电影播放器以全屏模式显示并且用户点击完成按钮,则不会发送此通知.
在我看来,这是错误的.使用下面的代码,当我点击完成按钮时,会调用playerPlaybackDidFinish.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerPlaybackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.player];
- (void) playerPlaybackDidFinish:(NSNotification*)notification
{
NSLog(@"WHY?");
self.player.fullscreen = NO;
}
Run Code Online (Sandbox Code Playgroud)
我需要区分用户点击完成按钮和电影完成整个播放.当电影结束时,playerPlaybackDidFinish会被调用,但就像我说的那样,当你点击Done时它也会被调用.
Gho*_*stM 22
以下是检查MPMoviePlayerPlaybackDidFinishReasonUserInfoKey的方法,这是MPMoviePlayerPlaybackDidFinishNotification通知的一部分
- (void) playbackDidFinish:(NSNotification*)notification {
int reason = [[[notification userInfo] valueForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];
if (reason == MPMovieFinishReasonPlaybackEnded) {
//movie finished playin
}else if (reason == MPMovieFinishReasonUserExited) {
//user hit the done button
}else if (reason == MPMovieFinishReasonPlaybackError) {
//error
}
}
Run Code Online (Sandbox Code Playgroud)
当您收到通知时,您可以检查播放器的 endPlaybackTime。如果是-1,那么电影就自然结束了。
对于流媒体内容,您可以检查 MPMoviePlayerPlaybackDidFinishNotification 上 userInfo 内的 MPMoviePlayerPlaybackDidFinishReasonUserInfoKey。
如果它等于 MPMovieFinishReasonUserExited 则表示用户停止播放内容。