我的应用只有肖像,但是,我想让用户在通过UIWebview观看全屏视频时旋转到风景。我做了一些研究,发现我要补充我的类作为这些通知观察员:UIMoviePlayerControllerWillExitFullscreenNotification没有收到
UIMoviePlayerControllerDidEnterFullscreenNotification UIMoviePlayerControllerWillExitFullscreenNotification
我添加和删除类作为像这样的观察:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerDidEnterFullScreen:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerWillExitFullScreen:) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];
}
- (void)moviePlayerDidEnterFullScreen:(NSNotification *)notification
{
self.videoPlayingFullScreen = YES;
}
- (void)moviePlayerWillExitFullScreen:(NSNotification *)notification
{
self.videoPlayingFullScreen = NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
if (self.videoPlayingFullScreen)
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
return UIInterfaceOrientationMaskPortrait;
}
我的问题是:我从来没有收到“UIMoviePlayerControllerWillExitFullscreenNotification”。我无法使用UIMoviePlayerControllerDidExitFullscreenNotification,因为如果用户完成以横向方向观看全屏视频并按下“完成”,则前一个视图控制器在纵向时也会以横向显示。
是否有另一种方式来检测用户“做”进入全屏和“将”退出全屏?还是有什么我失踪?
编辑: 我的应用程序仅适用于iOS 7。
这些通知没有记录,因此在使用时会有超级风险,因为它们可能会在发布新操作系统更新时破坏应用程序。例如,UIMoviePlayerControllerDidExitFullscreenNotification永远不会在iOS6上发送。 – Till
是否有文档记录的方式来检测UIWebview何时进入并将全屏退出? – Jonathan
按照[此答案](http://stackoverflow.com/a/8554077/91282)所述使用JavaScript事件。 – Till