Я видел много сообщений здесь об этой проблеме, но до сих пор не мог найти идеального ответа на эту проблему.
Итак, у меня есть табличное представление, и у каждой ячейки есть кнопка воспроизведения внутри него. Когда пользователь нажимает кнопку воспроизведения, я добавляю UIWebView
в эту ячейку и воспроизвожу видео на YouTube.
static NSString *youTubeVideoHTML = @"<html>\
<body style=\"margin:0;\">\
<iframe class=\"youtube-player\" type=\"text/html\" width=\"%0.0f\" height=\"%0.0f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\">\
</iframe>\
</body>\
</html>";
- (void)playVideoWithId:(NSString *)videoId {
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId];
[self loadHTMLString:html baseURL:nil];
}
Проблема:
Этот код фактически не воспроизводит видео, как я хочу, он просто запускает плеер YouTube и показывает его с помощью кнопки красного воспроизведения YouTube. Только когда пользователь нажимает красную кнопку, начнется воспроизведение видео.
Таким образом, пользователь должен нажать две кнопки, пока не начнется видеозапись - не лучший пользовательский интерфейс...
Как я уже сказал, я видел много сообщений об этой проблеме, некоторые вообще не работают, а некоторые работают, но с некоторыми проблемами, которые меня беспокоят.
Один из рабочих решений, который я нашел, был в этом сообщении от @ilias, он показывает, как это сделать, загружая HTML из файла (вместо строка, как я), проблема с этим утверждением заключается в том, что для каждого видео, которое я играю, мне нужно:
загрузите файл htm → вставьте в него идентификатор видео → напишите файл на диск → только теперь я могу воспроизвести видео.
Странно то, что это решение работает только при загрузке запроса веб-представления из файла, если я попытаюсь загрузить запрос из строки, равной содержимому файла, который не работает.