1

私はobjective-cとiphone 3.0 SDKを使用しています

URL(WebページまたはPDF)のコンテンツを取得して、UIWebView

やるべきことは次のようなことのようです:

NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];

1つのことを除いて、これは非常にうまく機能します。

リクエストに時間がかかる場合があります (5 ~ 10 秒としましょう)。ロード要求の最初と最後に「開始」および「停止」したい UIActivityIndi​​catorView があります。

ただし、これを行うと

[busySignal startAnimating];
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];
[busySignal stopAnimating];

loadRequest 呼び出しが非同期で行われ、UIActivityIndi​​catorView がすぐに停止するため、機能しません。

URL リクエストの最初と最後で「busySignal」を開始/停止する方法はありますか?

別の方法として、これは NSURLConnection を介して実行できると思います。これにより、コールバック関数「connectionDidFinishLoading:」が提供されます。

しかし、NSURLConnection から Web ページを表示する方法がわかりません。

だから、それは2つの質問だと思います。

1. loadRequest: への呼び出しの開始/終了時に UIActivityIndi​​catorView を開始/停止できますか? 2. NSURLConnection を使用して URL のコンテンツを取得し、UIWebView に情報を表示するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

5

その場で同期的にロードを実行したくはありません。そうすると、ロード中に UI が数秒間ジャムすることになります。メインの実行ループが長時間停止した場合 (インターネット接続が遅い場合)、システムはアプリがクラッシュして強制終了したと見なします。

何かを行っているときに通知を受けるために、UIWebViewDelegate メソッドを使用したいと考えています。例えば:

myUIWebView.delegate = self;
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL];
[myUIWebView loadRequest:requestObject];

次に、次のデリゲート メソッドを実装します。

//Called whenever the view starts loading something
- (void)webViewDidStartLoad:(UIWebView *)webView {
  [busySignal startAnimating];
}

//Called whenever the view finished loading something
- (void)webViewDidFinishLoad:(UIWebView *)webView_ {
  [busySignal stopAnimating];
}
于 2009-07-22T04:15:26.950 に答える
0

UIWebViewDelegate プロトコルを見てください

于 2009-07-22T02:42:05.613 に答える