Полноэкранный фильм MPMoviePlayerController внутри UIWebView
У меня проблема с UIWebView и MPMoviePlayerController:
Мой UIWebView имеет фильм внутри html (это локальный html файл), я использую html5 и видео-тег для видео.
Проблема заключается в следующем: пользователь может настроить видео для воспроизведения встроенного, непосредственно на html или он может нажать полноэкранную кнопку, но мне нужно знать, воспроизводится ли видео в полноэкранном режиме.
Я пытался использовать MPMoviePlayerDidEnterFullscreenNotification, но без успеха.
Кто-нибудь знает, как получить это уведомление из веб-представления?
Заранее спасибо
Ответы
Ответ 1
Отправляется уведомление (см. также этот пост: Событие с просмотром отображаемого изменения (Youtube MPMoviePlayerViewController)), но веб-представление сделает что-то взломанное: it добавит subview к корневому представлению UIViewController's
, сделает его полноэкранным и воспроизведет там фильм.
Сделайте основной UIViewController's
просмотр собственного представления и перехватите -didAddSubview:
и -willRemoveSubview:
. Таким образом, вы сможете обнаружить, когда плеер включен в полноэкранный режим.
Ответ 2
Вы также можете пометить свой основной вид и расширить UIView (или реализовать нижеприведенные методы, если у вас есть основной вид):
@implementation UIView (UIViewExtended)
- (void)didAddSubview:(UIView *)subview {
if (subview.superview.tag == ... ) {
... set some flag here or do some action
}
}
- (void)willRemoveSubview:(UIView *)subview {
if (subview.superview.tag == ... ) {
... set some flag here or do some action
}
}
@end
Ответ 3
Если вы встраиваете свой фильм в веб-представление с помощью HTML, вам нужно будет обратиться к своему фильму с помощью Javascript, а не класса MPMoviePlayer.
Взгляните на руководство по сценариям Apple для Quicktime здесь.
Я думаю, что вам требуется свойство GetRectangle()
, которое возвращает строку местоположения и размеров фильма внутри области встраивания.
Как только у вас есть размеры, вы можете передать его обратно в Objective-C из Javascript.
Ответ 4
Из Документация Apple:
Полноэкранное событие и свойства
Safari испускает событие webkitfullscreenchange, когда элемент входит или выходит из полноэкранного режима. Прослушайте это событие, чтобы обнаружить изменения.
Вы можете проверить свойство document.webkitIsFullScreen, чтобы узнать, был ли Safari недавно введен или вышел из полноэкранного режима. Свойство истинно в полноэкранном режиме.
Свойство document.webkitCurrentFullScreenElement содержит элемент, который находится в полноэкранном режиме. Используйте это свойство, если у вас есть несколько элементов, которые могут быть в полноэкранном режиме.
К сожалению, они не работают на iOS. Apple должна изменить это.