2012年6月18日月曜日

UIWevViewのリンクをsafariで開く方法(target="_blank"で開かないリンクを開く!)

iphoneのUIWebViewで表示させているWEBページは、
WEB内でtarget="_blank"が設定されていても、
UIWebView内で表示されてしまいます。

UIWebView内でリンクをクリックした際に、
safariを立ち上げて別ページとしてページを開くには、


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

こちらを使います。
これは、UIWebViewでページを開く際に、
アプリ内で開くか、サファリを立ち上げて表示させるかを選択できます。

return NO;のとき⇒サファリを開く
return YES;のとき⇒アプリ内で開く

クリックしたかどうかの判断は以下の条件で分岐できます。

if(navigationType == UIWebViewNavigationTypeLinkClicked

ただ、以下のものではリンクをクリックしても
リンク先が表示されなくなってしまうので、


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
return NO;
} else {
return YES;
}
}






[[UIApplication sharedApplication] openURL: [request URL]];
を書いてクリックされたリンクを開く様にしましょう。

こんな感じです。

------

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if(navigationType == UIWebViewNavigationTypeLinkClicked) { 
[[UIApplication sharedApplication] openURL: [request URL]];
return NO;
} else {
return YES;
}
}

------


ぜひお試しください。




0 件のコメント:

コメントを投稿