Как показать загрузку контента с YouTube?

#iphone #objective-c #ios #youtube

#iPhone #objective-c #iOS #YouTube

Вопрос:

У меня есть UIViewController с UIScrollView внутри него. Этот вид прокрутки содержит несколько строк и изображений, а с недавнего времени это собственный UIWebView, который содержит видео YouTube.

В качестве первого случая, предполагая, что у пользователя есть доступ в Интернет, как я должен показать пользователю, что окно содержит контент, который загружается в данный момент?

Размышления:

Я смог разместить UIView поверх этого UIWebView (в режиме прокрутки), который содержал UILabel с текстом «Загрузка …» внутри него. Но я не смог удалить / скрыть метку в зависимости от того, когда видео появилось полностью, поскольку я не смог заставить viewDidAppear и др. ответить. У меня также есть доступ к BOOL, который сообщает мне, есть ли у пользователя доступ в Интернет или нет, поэтому другой стороной вопроса было бы установить тот же ярлык, чтобы объяснить, что у них нет доступа к Интернету, если это правда. (что объясняет наличие белого прямоугольника в этом режиме прокрутки)

Я также посмотрел, можно ли было бы написать пользовательский ответчик, который запускался бы после завершения загрузки миниатюры видео в веб-представлении, но опять же я не смог задействовать ни один из методов ответа, чтобы это сработало.

Короче говоря, как мне следует решать эту проблему? Заранее спасибо за любой совет или помощь.

Ответ №1:

Установите свой контроллер просмотра в качестве контроллера веб-просмотра delegate . Протокол UIWebViewDelegate определяет два метода, -webViewDidStartLoad: и -webViewDidFinishLoad: , которые вы должны иметь возможность использовать для отслеживания того, когда страница начала загружаться и (надеюсь) когда появился эскиз.

Комментарии:

1. Спасибо за это — теперь они отвечают так, как я и ожидал. Кажется, ранее я размещал их не в том месте. Однако оба этих ответчика запускаются дважды — вероятно ли это из-за написанного мной подкласса UIWebView и того, как он работает?

2. Очень возможно. Я думаю, вы можете просто установить флаг в переменной экземпляра вашего класса делегата и игнорировать второй набор сообщений.