1

UIWebView がコンテンツをロードしている間に表示される空白の白いウィンドウを回避しようとしています。UIWebView に背景を配置する代わりに、現在のウィンドウに HUD を配置し、コンテンツが読み込まれたときに uiwebview を含む新しい uiviewcontroller をプッシュしたいと思います。これが私がやったことです(コードは正気のために短縮されています):

ファーストビュー:

MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
myVC.parentController = self.navigationController;
UIView *myView = [myVC view];      // Force view to load

MyViewController:

- (void)viewDidLoad
{
  ...
  [myWebView setDelegate:self];
  [myWebView loadHTMLString:htmlString baseURL:baseURL];
  ...
 }


- (void) webViewDidFinishLoad:(UIWebView*) webView {
     [parentController pushViewController:self animated:YES];
}

OK、それviewDidLoadで呼び出されていますが、uiwebviewdelegate メソッドはどれも呼び出されていません。ただし、View Controllerをプッシュすると

ファーストビュー:

MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.navigationController myVC animated:YES];

次に、すべての uiwebviewdelegate メソッドMyViewControllerが呼び出されます。

私は立ち往生しています。

4

1 に答える 1

0

アプリの具体的な要件はわかりませんが、通常は、最初にビュー コントローラーをプッシュしてから、コンテンツの読み込み中に新しいビュー コントローラーの上に HUD を表示することをお勧めします。でビュー コントローラのビューに HUD を追加しviewDidLoad、webView のwebViewDidFinishLoadコールバック メソッドで HUD を削除します。

まだ行っていない場合は、コンテンツの読み込み中にメイン UI スレッドをブロックしないように、Web ビューのコンテンツをバックグラウンド スレッドで読み込んでいることを確認してください。そうしないと、アプリが一時的にフリーズしたようにユーザーに表示されます。

于 2012-04-15T22:00:04.177 に答える