2

これは私には非常に奇妙です...

サファリモバイル(iPhone)とまったく同じように、ユーザーを読み込んで操作するシンプルなWebViewがあります。サファリでm.youtube.comにアクセスすると、次のようなリンクをクリックするとURLが変わります...

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

これの問題は、URLが私のWebビューで使用されているとは思わないことです...どういう意味ですか?次のコードは、ユーザーがリンクをクリックしようとするたびに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;
}

Webビューを最初に起動すると、m.youtube.comとNSLogs()がコンソールに読み込まれますが、ビデオをクリックするとNSLog()に失敗するため、新しいURLが読み込まれていないと思います。 、しかし、サファリに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-準拠-コード

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は1つの巨大なJavaWebアプリであり、デリゲートメソッドは呼び出されません。これは、読み込みがUIWebViewのDOMに直接書き込まれるためと考えられます。職場でこの問題に遭遇しました。修正方法はわかりませんが、JSクリックハンドラーを使用してソースを挿入する方法がある可能性があります。

于 2014-03-11T00:45:04.200 に答える