1

J'ai le MPMoviePlayerController configuré pour lire un film.Je veux détecter une touche sur le film pour avoir levé quelques boutons.J'ai utilisé le code: Comment détecter les touchers sur la fenêtre MPMoviePlayerController et toujours avoir le contrôle de lecture standard


// The movie's window is the one that is active 
     UIWindow* moviePlayerWindow = [[UIApplication sharedApplication] keyWindow]; 
     // Now we create an invisible control with the same size as the window 
     UIControl* overlay = [[[UIControl alloc] initWithFrame:moviePlayerWindow.frame]autorelease];

// We want to get notified whenever the overlay control is touched 
    [overlay addTarget:self action:@selector(movieWindowTouched:) forControlEvents:UIControlEventTouchDown]; 

    // Add the overlay to the window's subviews 
    [moviePlayerWindow addSubview:overlay]; 

mais le jeu arrière contrôleurs ne semble pas, je suppose que la fenêtre du lecteur ne reçoit pas la touch.how puis-je garder les contrôleurs de lecteur et détecte encore des touches? merci

Répondre

1

Vous devez créer votre propre sous-classe UIView et l'ajouter en superposition.

Dans la méthode -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event, vous pouvez faire tout ce que vous voulez faire lorsque l'écran est touché.

Je l'ai fait dans mon projet. J'ai implémenté la conception de VideoOverlay (la sous-classe de UIView) dans Interface Builder. C'est beaucoup plus facile quand vous devez ajouter d'autres éléments avec lesquels l'utilisateur doit interagir.

+0

Merci, mais comment transmettre l'événement tactile au MPMoviePlayerController pour avoir ses contrôleurs natifs? – user286472

+0

[[self nextResponder] touchesBegan: touche withEvent: événement]; – mxg

+0

Ne fonctionne pas pour moi, sur iPad 3.2.1. Il semble que tout ce que je fais, je ne peux pas avoir à la fois ma superposition et le joueur répondant :( – jv42