iOS - проигрывайте встроенное видео на YouTube, используя Javascript - PullRequest
2 голосов
/ 06 марта 2012

Я надеюсь, что это возможно.Я встроил видео YouTube в UIWebView в своем приложении.Я использую stringByEvaluatingJavaScriptFromString подход для использования JavaScript.Я хочу нажать кнопку в приложении и начать воспроизведение видео с YouTube.Вот некоторый код, чтобы обрисовать то, что я пытаюсь сказать.

Функция встраивания:

- (void)embedVideo:(NSString *)urlString frame:(CGRect)frame {
    NSString *embedHTML = @"\
    <html><head>\
    <style type=\"text/css\">\
    body {\
    background-color: transparent;\
    color: white;\
    }\
    </style>\
    </head><body style=\"margin:0\">\
    <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \
    width=\"330\" height=\"200\"></embed>\
    </body></html>";

    NSString *html = [NSString stringWithFormat:embedHTML, urlString];
    videoView = [[UIWebView alloc] initWithFrame:frame];
    [videoView loadHTMLString:html baseURL:nil];
    [self.detailedView addSubview:videoView];
}

Подправить внутри обработчика:

-(IBAction)detailedWatchTUI:(id)sender 
{
    [videoView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"
     "script.type = 'text/javascript';"  
     "script.text = \"function start() { "
     "var player = document.getElementById('yt');"
     "player.play();"
     "}\";"  
     "document.getElementsByTagName('head')[0].appendChild(script);"];  

    [videoView stringByEvaluatingJavaScriptFromString:@"start();"]; 
}

Я могу предупредитьВыделите элемент player , и он найдет встроенный HTML-объект, так что я знаю, что javascript работает, однако я не могу заставить его начать играть.Я пытался player.playVideo (); и player.play (); без удачи.

Есть предложения?

1 Ответ

1 голос
/ 10 апреля 2012

Вы можете попробовать это: зациклите подпредставления в UIWebView, найдите кнопку воспроизведения и нажмите ее в коде:

- (UIButton *)findButtonInView:(UIView *)view
{
    if ([view isMemberOfClass:[UIButton class]]) {
        return (UIButton *)view;
    }
    for (UIView *subview in view.subviews) {
        UIButton *button = [self findButtonInView:subview];
        if (button) {
            return button;
        }
    }
    return nil;
}
- (void)playButtonTapped
{
    UIButton *button = [self findButtonInView:self.webView];
    [button sendActionsForControlEvents:UIControlEventTouchUpInside];
}
...