2011-12-16 41 views
1

我有使用presentModalViewController:animated:调用的MPMoviePlayerViewController。当出现错误(无法连接互联网)时,我想解雇它。但是,dismissModalViewController在这种情况下似乎不起作用。当没有互联网连接时,dismissModalViewController不工作MPMoviePlayerViewController

- (void)movieFinishedCallback:(NSNotification*)aNotification 
{  
    NSLog(@"MOVIE FINISH CALL"); 

    // Obtain the reason why the movie playback finished 
    NSNumber *finishReason = [[aNotification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];  
    // Dismiss the view controller ONLY when the reason is not "playback ended" 

    if ([finishReason intValue] != MPMovieFinishReasonPlaybackEnded) 
    {  

     NSlog(@"Check go here"); 
     MPMoviePlayerController *moviePlayer = [aNotification object];  
     [[NSNotificationCenter defaultCenter] removeObserver:self 
                 name:MPMoviePlayerPlaybackDidFinishNotification 
                 object:moviePlayer];   
     [self dismissModalViewControllerAnimated:YES]; 
    } 
    else{ 
     [self dismissModalViewControllerAnimated:YES];   
    } 
} 



- (void)playPodcastRadio:(NSString *) urlRadio 
{ 
    // Initialize the movie player view controller with a video URL string 

    MPMoviePlayerViewController* mediaPlayer = [[MPMoviePlayerViewController alloc]initWithContentURL:[NSURL URLWithString:urlRadio]]; 
    mediaPlayer.moviePlayer.movieSourceType = MPMovieSourceTypeUnknown; 

    [[NSNotificationCenter defaultCenter] removeObserver:mediaPlayer name:MPMoviePlayerPlaybackDidFinishNotification object:mediaPlayer.moviePlayer]; 

    // Register this class as an observer instead  
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:mediaPlayer.moviePlayer]; 

    mediaPlayer.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    // Present the movie player view controller  
    [self presentModalViewController:mediaPlayer animated:YES]; 

    [mediaPlayer.moviePlayer prepareToPlay]; 
    [mediaPlayer.moviePlayer play]; 
} 

通知处理程序被调用并到达Check go here日志。但它不会消除modalViewController。 任何人都可以帮助我?

谢谢

它发生在iOS 4.3和iOS 5

+0

我想你检查,如果你的函数movieFinishedCallback:被称为万一没有互联网连接?它被称为 – Niko

+0

。它打印出支票去这里。但电影播放器​​没有被解雇:( –

+0

不应该是[moviePlayer dismissModalViewControllerAnimated:YES];?(我不确定) – Niko

回答