Ответ 1
У меня были проблемы с этим. После охоты вокруг SO и повторного чтения API iFrame YouTube несколько раз, вот что я придумал, чтобы приостановить видео YouTube, загруженные в iFrame в UIWebView.
У меня есть несколько UIWebViews в разбитом на страницы UIScrollView, поэтому у меня есть метод, в котором я формирую HTML-строку для загрузки в UIWebView:
NSString *urlString = [NSString stringWithFormat:@"https://www.youtube.com/embed/%@",videoID];
preparedHTML = [NSString stringWithFormat:@"<html><body style='background:none; text-align:center;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>var player; function onYouTubeIframeAPIReady(){player=new YT.Player('player')}</script><iframe id='player' class='youtube-player' type='text/html' width='%f' height='%f' src='%@?rel=0&showinfo=0&enablejsapi=1' style='text-align:center; border: 6px solid; border-radius:5px; background-color:transparent;' rel=nofollow allowfullscreen></iframe></body></html>", 628.0f, 352.0f, urlString];
Вы можете игнорировать элементы стиля в подготовленной строке HTTML. Важными аспектами являются:
- Использование API для создания объекта "YT.player". В какой-то момент у меня было только видео в теге iFrame и это помешало мне ссылаться на объект "player" позже с помощью JS.
- Я видел несколько примеров в Интернете, где первый тег script (тот, у которого есть тег iframe_api src) опущен, но мне определенно нужно, чтобы это работало.
- Создание переменной "player" в начале API script. Я также видел несколько примеров, которые пропустили эту строку.
- Добавление тега id в iFrame для ссылки в API script. Я почти забыл эту часть.
- Добавление "enablejsapi = 1" в конец тега iFrame src. Это повредило меня некоторое время, поскольку я изначально имел это как атрибут тега iFrame, который не работает/не работает для меня.
Когда мне нужно приостановить видео, я просто запустил это:
[webView stringByEvaluatingJavaScriptFromString:@"player.pauseVideo();"];
Я, наверное, кое-что делаю там, которые не нужны, но это то, что, наконец, начало работать для меня. Надеюсь, это поможет!