Смещен UINavigationBar после поворота во время полноэкранного воспроизведения MPMoviePlayer в UIWebview.

Я искал в Интернете, но не нашел решения.

Это моя проблема:

Я вставляю видео с YouTube в UIWebView. Это работает, но когда я вхожу в полноэкранное воспроизведение и поворачиваю свой iPad, UINavigationBar смещается (см. рисунок ниже). Я знаю, что нет прямого управления видеоплеером в веб-просмотре, но не знаю, как это решить.

Спасибо

Раздельная панель навигации


person Mentos    schedule 11.06.2012    source источник
comment
у меня была такая же проблема .. как вы это исправили .. спасибо   -  person Steve Gear    schedule 03.06.2015


Ответы (2)


Невозможно решить эту проблему с помощью MPMoviePlayerNotification, потому что UIWebView Video не использует MPMoviePlayerViewController или он является частным для разработчика. Но есть еще один способ исправить эту ошибку.

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(handleStatusBarFrameDidChange)
                                             name:UIApplicationDidChangeStatusBarFrameNotification
                                           object:nil];

- (void)handleStatusBarFrameDidChange {
    self.navigationController.navigationBarHidden = YES;
    self.navigationController.navigationBarHidden = NO;
}    
person PonyCui    schedule 10.12.2014

Я столкнулся с подобной проблемой в своем приложении для iPhone.

Интересно, правильно ли это, но на данный момент приведенный ниже код решил это.

<б>1. Добавлены наблюдатели в метод инициализации webivew.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youTubeStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youTubeFinished:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil];

Наблюдатели должны быть удалены, когда они вам больше не нужны. Я просто поместил код в метод Dealloc веб-просмотра.

[[NSNotificationCenter defaultCenter] removeObserver:self];

<б>2. Скрыть панель навигации при запуске фильма и показать ее снова, когда фильм закончится.
* ContentViewController в коде является владельцем моего веб-просмотра. так как раз в моем случае.

- (void)youTubeStarted:(NSNotification *)notification
{
    self.contentsViewController.navigationController.navigationBarHidden = YES;
}

- (void)youTubeFinished:(NSNotification *)notification
{
    self.contentsViewController.navigationController.navigationBarHidden = NO;
}

Я получил способ от Как получать NSNotifications от встроенного UIWebView Воспроизведение видео с YouTube

person magpoc    schedule 15.07.2012
comment
Единственная проблема с этим заключается в том, что UIMoviePlayerController является частным API. Есть ли у кого-нибудь опыт успешной отправки с помощью этих уведомлений? - person Meroon; 06.10.2012