Help us understand the problem. What is going on with this article?

UIWebViewを使うときに気をつけていること

More than 5 years have passed since last update.

ローディングを表示する

UIWebViewではページ表示するまでは、だいたい白い画面の状態で待たされます。
特に重いページを表示する場合、白い画面のまま固まったように見えてしまい、あまりよろしくないです。

ローディングを早くすることは(場合によりますが)難しいので、
心理的な対策としてアクティビティインジケータを入れるのが効果的です。
(UIWebViewにかぎらず、通信が発生するときは基本入れます)

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

↓らへんのライブラリを使うのも良いです。

MBProgressHUD

Demoの使い方そのままだと、インジケータ表示中はUIが操作できなくなるので
その場合はuserInteractionEnabled = NOにしておきます。

_hud.userInteractionEnabled = NO;

(もちろん、意図的にUIを操作させたくない場合はこの限りではないです)

SVProgressHUD

オブジェクトを生成する必要がなく、クラスメソッド一本で使えるため
MBProgressHUDより気軽に導入できます。

キャッシュを消す

UIWebViewは、キャッシュが非常に強いようで
アプリを再起動するだけではキャッシュが消えないことがあります。

そのため、更新性の高いWebコンテンツを表示する場合は、
UIWebViewの読込み直前にキャッシュを消すことで防止できます。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    //キャッシュを全て消去
    [[NSURLCache sharedURLCache] removeAllCachedResponses];

mailto:// でメールアプリが起動しないことがある

UIWebViewで表示しているページでmailtoリンクを踏んだとき、
メールアプリが起動しないケースがたまに…

読込み前にmailtoを判定することで、メールアプリを開けます。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if([[[request URL] scheme] isEqual:@"mailto"]){
        [[UIApplication sharedApplication] openURL:[request URL]];
        return NO;
    }

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした