【问题标题】:iOS embed UIWebView change with new youtube APIiOS 使用新的 youtube API 嵌入 UIWebView 更改
【发布时间】:2012-12-13 22:11:39
【问题描述】:

我开始注意到 youtube 视频加载到 UIWebViews 的方式发生了变化,我想知道这是否是我们未来应该期待的行为和/或我们是否可以复制以前的功能。

对比截图:

右边是旧的,左边是新的。添加的 youtube 按钮允许用户离开 youtube 视频并进入 youtube 网络界面。我希望能够阻止用户离开正在播放的视频。

我目前在 UIWebView 上使用这样的类别:

- (void)loadYouTubeEmbed:(NSString *)videoId
{    
    NSString* searchQuery = [NSString stringWithFormat:@"http://www.youtube.com/embed/%@?showinfo=0&loop=1&modestbranding=1&controls=0",videoId];

    searchQuery = [searchQuery stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:searchQuery]];
    [self loadRequest:request];
}

我注意到,我的查询将尊重moderatebranding=1 或showinfo=0,但不会同时尊重两者。随着 youtube 重新设计的推出,这种情况会发生变化吗?

【问题讨论】:

  • 如果您查看 requestDidLoad,您是否看到按下 youtube 按钮时正在输出 URL?换句话说,按下 youtube 按钮时会调用哪些委托函数?
  • - (void)webViewDidFinishLoad:(UIWebView *)webView 被调用
  • - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 也被调用。这可能就足够了

标签: ios uiwebview youtube-api


【解决方案1】:

当加载 Youtube 视频并点击 webView:shouldStartLoadWithRequest:navigationType: 时,您应该能够过滤掉该链接,使其不会继续。

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if ([[[request URL] absoluteString] isEqualToString:@"<URL String Youtube spits out when video selected>"]) {
        NSLog(@"Blocking YouTube...");
        return NO;
    } else {
        NSLog(@"Link is fine, continue...");
        return YES;
    }
}

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 2015-01-08
    • 2013-06-14
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 2011-09-11
    相关资源
    最近更新 更多