2012-01-15 15 views
0

私はUIWebViewの一部に<a href="" > <img src="" </a>が含まれています。このUIWebViewにUITapGestureを追加しました。基本的にユーザーがイメージをタップすると、指し示されたリンクに移動するのではなく、むしろ何かをやります。私はそれが指しているハイパーリンクに画像が移動するのを防ぐのに問題があります。何か案が?ウェブでの表示とリンクのオーバーライドに関する問題

- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 

それは私が持っているダミーと一致した場合、私は要求URLをチェックする:私は、ユーザーが上でその画像をタップしてたときに、それはいくつかの偽のリンクにHREFを変更するようにJavaScriptを注入しようとしました。ただし、これは機能しません。何らかの理由でhrefリンクを変更すると、次のようになります。

NSString *stripLink = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.href=%@", pt.x, pt.y, @"http://www.fakeurl.com"]; 
    if ([self stringByEvaluatingJavaScriptFromString:stripLink] != nil){ 
     NSString *testHref = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.href", pt.x, pt.y]; 
     NSLog(@"FINAL HREF IS %@", [self stringByEvaluatingJavaScriptFromString:testHref]); 
    } 

他のアイデアはありますか?

答えて

1

HTMLソースを管理している場合は、カスタムURIスキームを使用するようにhrefを変更することができます。写真://その後、あなたは、次の操作を行うことができます。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSURL *url = [request URL]; 
    if ([[url scheme] isEqualToString:@"photo"]) 
    { 
     // Custom Handling Goes Here 
     return NO; // Stops the link being executed by UIWebView 
    } else 
     return YES; 
} 

場合は、しかし、あなたは、あなたが少し遠回りする必要があり、HTMLソースを制御することはできません。例えば。

+0

よくある質問では、どのURLがユーザーによって押されるのかわかりません。なぜそうですか?上記のjavascript関数をタッチハンドラーで使用して、私が他のものに触れる画像のリンクを変更することができましたが、うまくいきません。 – adit

+0

あなたが達成しようとしていることがわかりません。場合?すべてのリンクを変更すると、それらはすべてカスタム処理コードになります。残りのURIに応じて、何か異なることができますか? – ikuramedia

+0

私はあなたのTapGestureがソリューションの一部である必要はないと思っています。それを取り除き、 'webView:shouldStartLoadWithRequest:...'で異なるURLを処理した結果カスタムアクションを行います。写真:// image1 photo:// image2 photo:// image3 - あなたはそれらをすべて別々に扱うことができます(それがあなたがしたいことならば...) – ikuramedia

関連する問題