点击“完成”按钮后应用程序停止

时间:2014-08-14 10:35:12

标签: ios objective-c xcode

因此,当我点击“完成”按钮时,无论何时我在电影播放器​​中,我的应用程序都会返回到上一个菜单,同时加载标志位于屏幕中间。然后我的应用程序完全停止,没有任何错误消息。

这是我的代码:

_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;

}

我不确定第二个!还是一样的问题! 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

添加通知中心观察者的代码引用名为doneButtonClick:的方法。但是,您实施的方法名为doneButtonClicked:(注意最后的#39;)。因此,当通知进入时,您会发生崩溃,因为您指定的方法不会退出。你需要:

  1. 更改addObserver来电以引用实际方法:@selector(doneButtonClicked:)
  2. 重命名您的方法以匹配addObserver来电:- (IBAction)doneButtonClick:(id)sender
  3. 顺便提一下,我重命名该方法并@selector引用doneButtonTapped - 用户点击触摸设备,他们不会点击“<。 / p>

答案 1 :(得分:0)

我解决了!

我评论了第二种方法(doneButtonClick :)并且它的实现然后,当视频播放器应该停止播放时,我添加了这个:

[_streamPlayer stop];
[_streamPlayer.view removeFromSuperview];
[self dismissLoadingView];
[SVProgressHUD dismiss];