Cocoa touch 解除MoviePlayService控制器激活后iPad视图方向不正确

Cocoa touch 解除MoviePlayService控制器激活后iPad视图方向不正确,cocoa-touch,mpmovieplayercontroller,rotation,screen-orientation,mpmovieplayer,Cocoa Touch,Mpmovieplayercontroller,Rotation,Screen Orientation,Mpmovieplayer,我的iPad应用程序使用方便的mpmovieplayervewcontroller类全屏显示电影。我是这样介绍的: [self.hostController presentMoviePlayerViewControllerAnimated:playerViewController]; [self.hostController dismissMoviePlayerViewControllerAnimated]; 后来,当通知播放结束时,我会这样驳回: [self.hostControll

我的iPad应用程序使用方便的
mpmovieplayervewcontroller
类全屏显示电影。我是这样介绍的:

 [self.hostController presentMoviePlayerViewControllerAnimated:playerViewController];
 [self.hostController dismissMoviePlayerViewControllerAnimated];
后来,当通知播放结束时,我会这样驳回:

 [self.hostController presentMoviePlayerViewControllerAnimated:playerViewController];
 [self.hostController dismissMoviePlayerViewControllerAnimated];
它工作正常,但在播放电影时用户旋转iPad时除外:

1-iPad处于垂直方向。我的观点是垂直的。 2-用户以垂直方向启动电影。球员是垂直的。 3-用户将iPad旋转到水平方向。 4-播放器切换到其水平方向。到现在为止,一直都还不错。 5-电影停止,播放器被关闭,我的屏幕再次出现,iPad仍然是水平的,但我的视图一直保持在垂直方向,这是在步骤1中。现在它看起来像侧面

当然,如果用户旋转iPad,它就会恢复正常。然后,我的视图会随着iPad的旋转而正常旋转

有人遇到过吗?简单的解决办法


谢谢。

我已经遇到过很多次了,这似乎是一个苹果的bug(并且已经报告过了)


解决这个问题的唯一方法(我发现)是收听
UIDeviceOrientationIDChangeNotification
UIApplicationIDChangeStatusBarOrientationNotification
通知。在这些通知上使用相对时间戳;如果两者都发生在一秒钟之内,则可以确定状态栏更改是用户切换方向的结果,而不是媒体SDK更改状态栏方向的结果。然后,当电影结束时,您可以告诉视图控制器它应该旋转到横向。

在您的示例中,您应该注意到您的视图在lanscape中,但格式为纵向,并且状态栏实际上处于纵向位置。您只需调用
[[UIApplication sharedApplication]SetStatusBaroOrientation:trueOrientation]
(在本例中为横向),视图控制器应完成其余操作。