2013/03/07更新

[XCODE] ネットワークインジケーターを動かして、UIWebViewが動いていることをアピールする

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
今日は、iPhoneのステータスバーにあるネットワークインジケーターの表示/非表示の制御方法をブログに書きたいと思います。 簡単な実装なのですが、ブログにでも書いておかないと毎回アプリ開発で忘れて調べちゃうので、備忘録の意味を込めて。

画像


ネットワークインジケータとは?動かすメリットとは?

ネットワークインジケータは、iPhoneのステータスバーに表示されるあやつです。
クルクルっと動いていると、何か通信してるんだなぁとユーザーが感じ取れるUIです。

画像

iPhoneでSafariとかを使っているとよく見るUIですが、iPhoneアプリでは自分で動かそうと思わないと、動かない感じなのです。
特にUIWebViewでは、ページ内のリンクをクリックして新しいページに遷移するときとか、画面描画されるまで何も変化しないので、 ネットワークインジケーターを動かさないと「このアプリと止まったんじゃね?」と思われてしまう恐れがあります。

ということで、今回はネットワークインジケーターの動かし方を以下に記載します。



ネットワークインジケータを動かす/止める

動かしたり止めたりするのは簡単で、以下のようなコードで実現できます。
// ネットワークインジケーターを動かす。
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

// ネットワークインジケーターを止める。
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
こんな感じで簡単に実装できちゃいます。
続いて、UIWebViewでページ内のリンククリック時からページロード終了まで、ネットワークインジケーターを表示する実装です。



UIWebViewでリクエスト開始から終了の間、ネットワークインジケーターを表示する

これを行うために、UIWebViewのdelegateを利用します。
UIWebViewDelegateの2つのメソッドで、インジケーターの開始/終了のコードを記載します。
#pragma mark - UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)wView {
	// 通信が始まったら、ネットワークインジケーターを表示する。
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}
- (void)webViewDidFinishLoad:(UIWebView *)wView {    
    // 全リクエスト終了
    if (wView.loading == NO) {
		// 通信が始まったら、ネットワークインジケーターを非表示する。
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
    }
}
これで、UIWebViewでロード状況を簡単ながらアピールすることが出来ます。



最後に

実装している自分は、ロード中に何も表示されていないことが気にならなかったりしましたが、他の人に使ってもらって、 リンクを繰り返しタップしているところとか見て、通信状況の表示も必要なんだと感じた次第でした。
他の人に使ってもらうテストは、いろいろと収穫がありますねー。

最後までご覧頂きましてありがとうございました。





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。