2011-12-01 21 views
5

Uygulama arka plana girdiğinde MPMoviePlayerViewController ile ilgili bir sorunum var, daha sonra yeniden başlatıyorum veya başka bir görüntüye gidiyorum Kontrolcü film karartıldı!MPMoviePlayerViewController arka plana girerken siyah olur

EIDTED KODU::

-(void)viewDidLoad { 
     [self moviePlayer2]; 
    } 

    - (void) moviePlayer2 { 



    NSString *path = [[NSBundle mainBundle] pathForResource:@"cloud" ofType:@"mp4"]; 
    player = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]]; 
    player.view.userInteractionEnabled = YES;  
    player.moviePlayer.repeatMode = YES; 
    player.moviePlayer.scalingMode = MPMovieScalingModeFill; 
    player.moviePlayer.controlStyle = MPMovieControlStyleNone; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackStateChange:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:[player moviePlayer]]; 

    [[player moviePlayer] play]; 

    [self.view addSubview:player.view]; 

} 


-(void) moviePlayBackStateChange: (NSNotification *) note { 

    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackStateDidChangeNotification object:[player moviePlayer]]; 

    [[player moviePlayer] play]; 

    //[player release]; 
    NSLog(@"FINISHED"); 
} 

teşekkür ederim benim menülerin arka planda oynayan film var, burada benim kodudur. Buna

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:[player moviePlayer]]; 
[player release]; 

:

+0

, uygulamanız arka plana girdiğinde movieFinishedPlaying'i çağırıyor mu? Bilmiyorsanız, bir kesme noktası ayarlayın (veya konsola NSLog kullanın) ve öğrenin. ViewControllers arasında geçiş yaptığımda –

+0

evet. derleyici bana NSFog mesajını göster –

cevap

3

Ben aşağıdaki kodları eklemek gerekebilir düşünüyorum:

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackStateChange:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:[player moviePlayer]]; 

ve m ele alın moviePlayBackStateChange yönteminde ovie durumu. Film oynatılırken ve uygulama arka planda çalışmaya başladığında film duraklatılacak, böylece uygulama arka plandan geldiğinde filmi aşağıdaki gibi devam ettirmeniz gerekir. Değilse, film duraklama durumunu koruyacaktır. Bu yüzden uygulamanız siyah olur. Daha sonra film oynatmaya devam edecektir. bu adam size yardımcı olabilir

-(void) pauseMovieInBackGround 
{ 
    [player moviePlayer] pause]; 
    [player.view removeFromSuperview]; 
} 
-(void) resumeMovieInFrontGround 
{ 
    [self.view addSubview:player.view]; 
    [[player moviePlayer] play]; 
} 

Hope: Uygulamanın arka plandan arka plan ve sırtlarına içine geldiğinde invote gereken iki yöntemleri ekleyerek .

+0

bu kodu nereye koymalıyım? '[[player moviePlayer] play];' düzenlenmiş kodumu görebilseyim ... çünkü aynı problemim var ... görüntü değiştirdikten sonra filmim karadı! –

+0

görüntülemeler, mevcut modlu denetleyiciyle değişir ve daha sonra diğer görüntülemelerden uzaklaşır –

+0

Kodlarımı düşünür müsün? Bu cevaba gerçekten ihtiyacım var –

1

bu değiştirmeyi deneyin

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:[player moviePlayer]]; 
[movieController.view removeFromSuperview]; 
[player release]; 

eğer inşaat bak: D

+0

şimdi beyaz bir ekran removeFromSuperview nedeniyle ortaya çıkıyor! –

+0

herhangi bir öneri? –

+0

Kaldırılan görünümü başka bir görünümle değiştiriyor musunuz? Değilse, bunu açıklar. "[ViewController addSubview: newView] kullandığınızdan emin olun." ama viewController ve newView'i kendi görünümünüzle değiştirin –

İlgili konular