因此,当我点击“完成”按钮时,无论何时我在电影播放器中,我的应用程序都会返回到上一个菜单,同时加载标志位于屏幕中间。然后我的应用程序完全停止,没有任何错误消息。
这是我的代码:
_streamPlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
if(self.streamPlayer != nil){
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:_streamPlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(doneButtonClick:)
name:MPMoviePlayerDidExitFullscreenNotification
object:_streamPlayer];
编辑:我实现了这样的2个功能:
-(void) moviePlayBackDidFinish:(NSNotification*)notification {
NSNumber *reason = [[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
switch ([reason intValue]) {
case MPMovieFinishReasonPlaybackEnded:
NSLog(@"Playback ended");
break;
case MPMovieFinishReasonPlaybackError:
[self alertWithMessage:NSLocalizedString(@"The video can't open!", @"The video can't open!")];
break;
case MPMovieFinishReasonUserExited:
NSLog(@"User Exited");
break;
default:
break;
}
}
-(IBAction) doneButtonClicked:(id)sender
{
[self.streamPlayer.view removeFromSuperview];
self.streamPlayer = nil;
}
我不确定第二个!还是一样的问题! 有什么想法吗?
答案 0 :(得分:0)
添加通知中心观察者的代码引用名为doneButtonClick:
的方法。但是,您实施的方法名为doneButtonClicked:
(注意最后的#39;)。因此,当通知进入时,您会发生崩溃,因为您指定的方法不会退出。你需要:
addObserver
来电以引用实际方法:@selector(doneButtonClicked:)
或addObserver
来电:- (IBAction)doneButtonClick:(id)sender
顺便提一下,我重命名该方法并@selector
引用doneButtonTapped
- 用户点击触摸设备,他们不会点击“<。 / p>
答案 1 :(得分:0)
我解决了!
我评论了第二种方法(doneButtonClick :)并且它的实现然后,当视频播放器应该停止播放时,我添加了这个:
[_streamPlayer stop];
[_streamPlayer.view removeFromSuperview];
[self dismissLoadingView];
[SVProgressHUD dismiss];