UIVIewController で webview を使用し、次の方法を使用してローカル HTML ファイルをロードします。
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:filePath]]];
このメソッドを ViewDidLoad に配置すると、見栄えの悪いコントローラーに移動するときに白いフリックが表示されます。
以下のようにViewWillAppearにこのメソッドを入れてみました。私は webViewLoaded フラグを使用して、webview がロードされていることを確認し、現在のビューのみを表示します。
- (void)viewWillAppear:(BOOL)animated {
webViewLoaded = NO;
webView.scalesPageToFit = allowZoom;
webView.dataDetectorTypes = UIDataDetectorTypeNone;
webView.delegate = self;
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:filePath]]];
int count = 0;
while(webViewLoaded == NO)
{
NSLog(@"Waiting...");
[NSThread sleepForTimeInterval:0.1];
if(count++ > 10) break;
}
}
- (void)webViewDidFinishLoad:(UIWebView *)localwebView {
webViewLoaded = YES;
}
ViewDidLoadでも同じことを試しましたが、それでも無限ループになります。
webViewLoaded は「volatile BOOL」ですが、webview デリゲート メソッドが呼び出されていないことに注意してください。何が起こっているのかわからない!
誰でもこれを修正するのを手伝ってくれませんか。ありがとう。