2

这对我来说很奇怪......

我有一个简单的 WebView,它可以像 safari mobile (iPhone) 一样加载并与用户交互。现在,当您在 safari 中访问 m.youtube.com 时,当您单击指向此类内容的链接时,网址会发生变化......

http://m.youtube.com/watch?gl=US&hl=en&client=mv-google&v=HX6SyoZ5kw8

问题是我认为我的 webview 中没有使用该 url ......我是什么意思?以下代码用于每次用户尝试单击链接时加载一个 url,它可以工作,但我对 Youtube 有问题...

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
NSLog(@"%@",urlString);
VideoURLTextBox.text = urlString;
return YES;
}

当我第一次启动 webview 时,它会将 m.youtube.com 和 NSLogs() 加载到我的控制台中,但是当我决定单击视频时,它无法 NSLog() 因此我认为没有加载新的 url ,但是当你在 safari 中加载 m.youtube.com 并点击一个视频时,你会加载一个类似上面的 url,那么为什么这不是我的 iPhone 应用程序中的 NSLog() 呢?

4

2 回答 2

1

您可能看到的是 youtube 视频正在运行 javascript 来播放视频,您必须拦截 javascript 回调才能看到。这是 youtube 视频播放器 api 的链接,详细说明了回调,https://developers.google.com/youtube/js_api_reference#SubscribingEvents

如果您只想在 iOS 应用程序中嵌入 youtube 视频,请使用它。

使用移动 YouTube 网站不是很好,过去我遇到了很多问题,最终制作了一个 UIWebView 类别。我遇到了你的问题,决定把它扔到 github 上 :-)

https://github.com/enigmaticflare/UIWebView-YouTube--iOS-Category--ARC-compliant-code

UIWebView+YouTube iOS 类别来简化加载 youtube 视频。

指示

1)将这些文件添加到您的项目中

UIWebView+YouTube.h
UIWebView+YouTube.m

2)例如启动 UIWebView

@property (strong, nonatomic) UIWebView *webView;
@synthesize webView = _webView

_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,212,172];
//set the X,Y origin of CGRect to where you want the webView to appear.

_webView.delegate = self;
[_webView loadYouTubeVideoID:@"gR8dO7Cln6M"];
[self.view addSubView:_webView];

祝你好运,希望这是你要找的:)

亚当

于 2012-07-18T01:01:04.683 回答
0

m.youtube.com 是一个巨大的 java web 应用程序,不会调用委托方法,大概是因为任何加载都直接写入 UIWebView 中的 DOM。在工作中遇到这个问题,不确定修复,但可能有一种方法可以使用 JS 点击处理程序注入源代码。

于 2014-03-11T00:45:04.200 回答