2010-07-15 11 views
1

Je suis confronté à un problème dans l'intégration de la vidéo ipad. Mon code fonctionne bien, je veux dire qu'il joue la vidéo, mais une fois que la vidéo atteint sa fin. La méthode de rappel n'est pas appelée.iPad videoPlayerDidFinishPlaying méthode de rappel ne répond pas

Cette méthode est appelée lorsque vous appuyez sur le bouton Lire la vidéo.

-(IBAction) playVideo : (id) sender 
{ 
    [self initPlayingVideo:@"toyVid.mp4"]; 
} 

Cette méthode gère la lecture de vidéo.

-(void) initPlayingVideo: (NSString *) videoFile 
{ 
    NSString *moviePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:videoFile]; 

    theMovie = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:moviePath]]; 
    theMovie.moviePlayer.scalingMode = MPMovieScalingModeAspectFit; 
    theMovie.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 


    [self.view addSubview:theMovie.view]; 

    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(videoPlayerDidFinishPlaying 
    name:MPMoviePlayerPlaybackDidFinishNotification 
    object:theMovie]; 

    videoPlayer = [theMovie moviePlayer]; 
    [videoPlayer play]; 
} 

Ceci est la méthode de rappel.

-(void) videoPlayerDidFinishPlaying: (NSNotification*)aNotification 
{ 
    theMovie = [aNotification object]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie.moviePlayer]; 
    [videoPlayer stop]; 
    [theMovie.moviePlayer release]; 
    [videoPlayer release]; 
    [theMovie.view removeFromSuperview]; 
} 

Où je fais erreur? S'il vous plaît guider.

Cordialement Ranjan

+0

Vous pouvez envisager de mettre vos codes dans les sections de code: il suffit de placer quatre espaces avant vos codes. –

Répondre

0

Avez-vous manqué le: et) dans votre sélection? Je suppose que) peut être votre faute de frappe sinon vous ne pouvez pas compiler vos codes. Votre sélection prend un paramètre. Il devrait être:

selector:@selector(videoPlayerDidFinishPlaying:) 

Cela correspond à votre méthode d'instance. Je suppose que vous n'en avez pas sans paramètre.

+0

Merci pour votre réponse David. La fonction d'écoute est comme dans. deux-points (:) et la parenthèse fermante ")" est là. [[NSNotificationCenter defaultCenter] \t addObserver: auto \t sélecteur: @selector (videoPlayerDidFinishPlaying :) \t nom: MPMoviePlayerPlaybackDidFinishNotification objet \t: themovie]; – TechBee

+0

L'objet était erroné. Objet: [le MoviePlayer de film]; – TechBee