私のアプリは縦向きのみですが、UIWebview を介して全画面ビデオを視聴するときに、ユーザーが横向きに回転できるようにしたいと考えています。いくつかの調査を行ったところ、これらの通知のオブザーバーとしてクラスを追加する必要があることがわかりました。
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 専用です。