iPhoneアプリ開発 -WebViewで表示しているページで特定のリンククリック時の動作を変える-
やりたいこと
UIWebViewでWebページを表示し、特定のリンクをクリックした際には別処理をおこないたい。
例)
- 自身で用意したサイトを表示
- 特定のリンク先の場合はアプリ内ではなくSafariを起動し表示
どんな時に?
アプリに「お知らせ」という箇所を用意した場合、「お知らせ」の内容は定期的に変える可能性があるため、Webサイトを表示したいというケースがよくあります。
その時に、「お知らせ」にあるページへのリンクがあったとしても、アプリ内のWebViewで表示されてしまいます。
それが良いケースもありますが、Safariで開いてほしいというケースもあります。
やったこと
(1)
最初に、UIWebviewのdelegateをselfにしておきます。
(2)
「webView:shouldStartLoadWithRequest:navigationType:」を利用します。
navigationTypeにユーザーがおこなった動作が含まれます。
定義されているのは以下になります。
- UIWebViewNavigationTypeLinkClicked
- UIWebViewNavigationTypeFormSubmitted
- UIWebViewNavigationTypeBackForward
- UIWebViewNavigationTypeReload
- UIWebViewNavigationTypeFormResubmitted
- UIWebViewNavigationTypeOther
今回のユーザーがリンクを触ったという動作の場合は、以下になります。
- UIWebViewNavigationTypeLinkClicked
というわけで、以下の様な感じで実装できます。
上記の場合、タッチしたリンク先が「http://example.com」だった場合はブラウザで起動するようになっています。
また、「return NO」にすることにより、そのWebページをWebViewで表示しないようにしています。
参考
広告
関連記事
-
jQuery Mobile導入手順 -はじめの一歩-
jQuery Mobileの1.0がリリースされ、利用したい方が増えていると思います。 最初に何を
-
iPhoneアプリ開発 -背景画像をiPhone5対応してみた-
* やりたいこと iPhone5は今までと異なり高さが違います。 その結果、背景画像によっては良い感
-
iPhoneアプリ開発 -mixiSDKを使ってmixi連携をしてみる(2)-
* 前回 は、「ユーザーにAPI利用のための認可」をおこなってもらうところまでやりました。 本エン
-
iPhoneアプリ開発 -利用するべきサービス-
iPhone(iOS)アプリ開発において使っているサービスを列挙。 この手のサービスがないと、開発中
-
定期的にデータ取得のためにCakePHP1.3でシェル機能を利用
定期的にデータを取得する行為をするために、はじめてシェル機能を使ってみたのでメモ。 * ス
-
TestLink1.91のバグの修正方法
どうやらTestLink1.91にはバグがあるようなので、修正方法を以下に記述。 Test
-
jQuery Mobileでdata-role=headerを使うときの注意点 -勝手にタイトルが変更される件-
* 現象 +headタグでtitleタグで文字列(A)を記述している +data-role=he
-
ヘルプ作成で思ったWebサービスの3つの心得 -短文の教え-
最近ヘルプを作って思った3つのこと。 * 1文に複数の内容を書かない 1文に複数の内容を書いてい
-
第二回Androidテスト祭り参加記録 -祭りに参加してきたよ-
久しぶりに勉強会に参加してきました。 参加してきたのは「第二回Androidテスト祭り(4/28)
-
CakePHP1.3にSmartyを導入
いい加減、CakePHP(1.3)にもSmartyを導入することにしました。 * ダウンロード