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];
}