2

Mon application pour iPad affiche un film en plein écran à l'aide de la classe pratique MPMoviePlayerViewController. Je vous présente comme ceci:Affichage de l'iPad dans une orientation incorrecte après le rejet de la communicationMoviePlayerViewControllerAnimated

[self.hostController presentMoviePlayerViewControllerAnimated:playerViewController]; 

Et plus tard, lorsque le message indique que le jeu est fait, je rejette comme ceci:

[self.hostController dismissMoviePlayerViewControllerAnimated]; 

Il fonctionne très bien, sauf lorsque l'utilisateur fait pivoter l'iPad lors de la lecture de film :

1- L'iPad est dans l'orientation verticale. Ma vue est verticale. 2- L'utilisateur démarre le film en orientation verticale. Le joueur est vertical. 3- L'utilisateur fait pivoter l'iPad à l'horizontale. 4- Le lecteur passe à son orientation horizontale. jusqu'ici tout va bien. 5- Le film s'arrête, le joueur est renvoyé, mon réapparaît, l'iPad est toujours horizontal, mais mon point de vue est resté dans l'orientation verticale qui était à l'étape 1. Maintenant, il regarde de travers.

Bien sûr, si l'utilisateur fait ensuite pivoter l'iPad, il revient à la normale. Ma vue pivote alors normalement lorsque l'iPad tourne.

Quelqu'un at-il déjà rencontré cela? Une solution facile?

Merci.

Répondre

2

J'ai rencontré cela plusieurs fois et il semble être un bug d'Apple (et l'a signalé comme tel).

La seule façon (j'ai trouvé) autour de ceci est d'écouter les notifications UIDeviceOrientationDidChangeNotification et UIApplicationDidChangeStatusBarOrientationNotification. Utilisez l'horodatage relatif sur ces notifications; Si les deux se produisent l'un dans l'autre, vous pouvez être sûr que le changement de la barre d'état résulte des orientations de commutation de l'utilisateur et non pas du SDK multimédia qui change l'orientation de la barre d'état. Ensuite, lorsque le film est terminé, vous pouvez indiquer à votre contrôleur de vue qu'il doit pivoter en mode paysage.

+0

Dans votre exemple, vous devriez remarquer que votre vue est dans un paysage, mais formatée pour le portrait, et que la barre d'état est en position portrait. Tout ce que vous avez à faire est d'appeler '[[UIApplication sharedApplication] setStatusBarOrientation: trueOrientation]' (landscape, dans cet exemple), et votre contrôleur de vue devrait faire le reste. – Jason

+0

Bien ça marche. Merci beaucoup. –