[iOS SDK] UIWebView でタップされたリンクを Safari で開く方法
UIWebView では、リンクをロードする度に shouldStartLoadWithRequest メソッドが呼ばれます(UIWebViewDelegate プロトコルを実装する必要有り)。
そのメソッド内で YES を返すと読み込まれ、NO を返すと読み込まれないようにすることができます。このメソッド内で、UIWebView でタップされたリンクを色々と料理することが出来ます。
ここでは、タップされたリンクをすべて Safari で開く一例を紹介します。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (navigationType == UIWebViewNavigationTypeLinkClicked ) {
[[UIApplication sharedApplication] openURL: [request URL]];
return NO;
}
return YES;
}
NSURLRequest を使えば、リクエストしようとしているリンクに応じて、読み込むかどうかを設定できますね。
ユーザーのアクションを表す UIWebViewNavigationType は、こんな感じで定義されているみたいです。
**UIWebViewNavigationType**
enum {
UIWebViewNavigationTypeLinkClicked,
UIWebViewNavigationTypeFormSubmitted,
UIWebViewNavigationTypeBackForward,
UIWebViewNavigationTypeReload,
UIWebViewNavigationTypeFormResubmitted,
UIWebViewNavigationTypeOther
};