`UIWebView` のメソッドやプロパティ、関連リンクのメモ

ツイッターとかフェイスブックとかをAPIから利用するのはかなりダルそうなのでUIWebViewでいいよね…ということでメソッドとかを調べた

UIViewController のサブクラスを UIWebView 用に作る

XCode のメニューの File > New > New FIle… > iOS > Cocoa Touch > UIViewController subclass

からテキトーにファイルを生成して、新しいクラスに UIWebViewDelegate を実装する

@interface F8WebViewController : UIViewController<UIWebViewDelegate>

いちいちプログラムで画面をつくるのは面倒くさいので インターフェースビルダー で .xib を利用したほうが楽だね。

UIWebViewDelegate

ウェブページにアクセスするときなど特定のタイミングにコールされるメソッドが定義されている。

これらのメソッドは UIWebView#loadRequest: が呼ばれたあとやリンクをクリックした時などに順次実行される。

  • - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType | リクエストを開始する直前にコールされる。このプロトコルのメソッドのうち最初にコールされる。NO を返すと読み込まれないので、リクエストの内容によって処理を振り分けできる。
  • - (void)webViewDidStartLoad:(UIWebView *)webView | ウェブページのダウンロードを開始した時にコールされる。これは2番目。
  • - (void)webViewDidFinishLoad:(UIWebView *)webView | ウェブページのダウンロードが完了した時にコールされる。これは3番目。
  • - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error | ウェブページのダウンロードが失敗した時にコールされる。ここで失敗した時には ユーザーに失敗したコトを伝えなければならないらしい。これを怠るとリジェクトされるっぽい?これも3番目にコールされる。

メソッドなどのメモ

goBackgoForward メソッド, canGoBackcanGoForward プロパティ

名前の通り 前のページに戻ったり、進んだりするメソッド。プロパティは前のページに戻れるか・進めるかを BOOL で取得できる。

UIWebViewDelegate#webViewDidFinishLoad などでボタンの有効・無効を切り替えるとユーザインタフェース的によいかなと。

- (void)webViewDidFinishLoad:(UIWebView *)webView {
  buttonForward.enabled = [webView canGoForward];
  buttonBack.enabled = [webView canGoBack];
}

reload メソッドと .loading プロパティ

if ( webView.loading == NO ) webView.reload;

reload メソッドで再読み込みできる。reload は更新用のボタンに関連付けて使用するに、ボタンの連打による連続リロードを阻止したい場合は .loading プロパティでローディング中に実行されないようにすればよい。

.request プロパティ

UIWebView によって実行した直前のリクエストを取得できる。

関連クラスについてのリンクmemo

URLスキームについてのリンクmemo

カスタムURLスキームについてのmemo

Share
関連記事