3

UIWebView読み込み中にアクティビティ インジケーターを表示したいと考えています。そして、webViewDidFinishLoading. 唯一の問題は、このNSURLErrorDomainエラー -999 が発生していることです。周りを検索した後、エラーメッセージを表示しないように機能するこの修正webViewDidFinishLoadingを見つけましたが、アクティビティインジケーターやその他の進行中のものを取り除くために呼び出されることはありません. didFinishLoading-999で失敗した場合、webViewDidFailWithErrorメソッドでメソッドを呼び出すことができると思いますが、それは非常にハックで間違っているようです。これを修正する方法についてのアイデアはありますか?

編集* webview を 2 回読み込むように求められている場所を突き止めたので、エラー -999 を取り除くことができました。ただし、webview を 2 回読み込もうとしない限り、どちらのデリゲート メソッドも呼び出されていないようです (この場合、webViewDidFinishLoadingメソッドは 1 回だけ呼び出されます)。

- (void)viewDidLoad
{
    self.webView.delegate = self;
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(refresh)
                                                 name:@"DidBecomeActive"
                                               object:nil];
    [super viewDidLoad];
}
-(void)refresh{
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://myapp.com/app/"]]];
    self.webView.scrollView.bounces = NO;
}

- (void)webViewDidFinishLoading:(UIWebView *)wv
{
    NSLog(@"finished loading");
    [self.activityInd stopAnimating];
    [self.view bringSubviewToFront:wv];
}

- (void)webView:(UIWebView *)wv didFailLoadWithError:(NSError *)error
{
    NSLog(@"Failed: %@", error);
    if([error code] == NSURLErrorCancelled){
        return;
    }
    [self.activityInd stopAnimating];
    [[[UIAlertView alloc] initWithTitle:@"Can't find server" message:@"Check your internet connection and try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]show];
}
4

4 に答える 4

13

次のようにUIWebViewデリゲートをそのオブジェクトに割り当てましたか

webViewObject.delegate = self 
于 2013-04-02T05:13:29.583 に答える
3

コピー/貼り付けエラー。

- (void)webViewDidFinishLoading:(UIWebView *)wv

次のように変更する必要があります。

- (void)webViewDidFinishLoad:(UIWebView *)wv
于 2013-04-02T05:48:02.267 に答える
1

.h ファイルにプロトコル「UIWebViewDelegate」を実装する

于 2013-04-02T07:38:29.493 に答える