У меня возникают проблемы с захватом, когда проигрыватель YouTube войдет в полноэкранный режим или выйдет из полноэкранного режима в iOS 8, потому что эти уведомления были удалены UIMoviePlayerControllerDidEnterFullscreenNotification
и UIMoviePlayerControllerWillExitFullscreenNotification
для этой версии ОС версия.Правильно принудительно или разрешить ландшафтный режим для встроенного видео Youtube в iOS 8 без NSNotificationCenter
Поскольку мой проект приложения установлен только в портретном режиме, видеоролик не будет вращаться в ландшафтном режиме, когда воспроизводится, что действительно не очень удобно для просмотра видео на вашем устройстве.
Обычно пользователь хочет посмотреть видео в портретном или альбомном режиме, когда видео входит в полноэкранный режим.
Это так, как я делал это для IOS 7, который работал идеально, но не в прошивкой 8.
Во-первых, я установить эту функцию в моей AppDelegate.m
с логическое свойство в моем AppDelegate.h
, который я назвал videoIsInFullscreen
и функции,
// this in the AppDelegate.h
@property (nonatomic) BOOL videoIsInFullscreen;
// This in my AppDelegate.m to allow landscape mode when the boolean property is set to yes/true.
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
if(self.videoIsInFullscreen == YES)
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else
{
return UIInterfaceOrientationMaskPortrait;
}
}
Тогда в моей ViewController.m
во-первых, я бы #import "AppDelegate.h"
после делать это, я добавлю несколько уведомлений в моем viewDidLoad
методе ..
-(void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerStarted) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerEnded) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];
}
Конечно, не забудьте удалить их ..
-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];
}
Тогда, я имел мои функции, которые будут получать вызываемые когда эти уведомления получить пожары ... Вот где я позволяю пейзаж и затем верните его в портрет. Это касается моего приложения, потому что оно настроено только на портретную поддержку, но я не хочу этого для видео YouTube.
// first we set our property in the our AppDelegate to YES to allow landscape mode
- (void)playerStarted
{
((AppDelegate*)[[UIApplication sharedApplication] delegate]).videoIsInFullscreen = YES;
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
}
// Then I will set the property to NO and force the orientation to rotate to portrait.
- (void)playerEnded
{
((AppDelegate*)[[UIApplication sharedApplication] delegate]).videoIsInFullscreen = NO;
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
}
Но это не так для прошивки 8 .. Эти уведомления больше не работают для прошивки 8 так, я нашел что-то подобное, используя эти уведомления, но я не слишком счастлив, потому что они не являются 100% точными для видеоплеер. UIWindowDidBecomeVisibleNotification
и UIWindowDidBecomeHiddenNotification
Итак, как я могу сделать это правильно или, по крайней мере, правильно работает для моего встроенного видео YouTube и разрешить ландшафтный режим в iOS 8 ...?
попробовал - не дотягивал -playerStarted и игрок закончился. equest.URL.absoluteString в основном о: blank и http: //www.youtube.com/embed/..... - и это до воспроизведения видео. Когда воспроизводится видео, должен запускаться запускStartLoadWithRequest. есть идеи? – Boaz
shouldStartLoadWithRequest загорается, когда видео воспроизводится, и вы можете поймать состояние, как показано выше. Я не уверен, правильно ли я правильно понял ваш вопрос. В нем нет уведомлений .. это работает, если вы используете встроенное видео youtube внутри iframe в веб-просмотре. – NorthBlast
ну, это не так :(Я поставил NSLog (@ "URL:% @", request.URL .absoluteString), в начале функции, и я не получаю отпечатков при нажатии на игру – Boaz