Iphone 未从不可见的uiwebview调用uiwebviewdelegate 我试图避免在UIWebVIEW加载内容时显示的空白窗口。我不想在UIWebView上放置背景,我只想在当前窗口上放置一个HUD,然后在加载内容时推送包含UIWebView的新uiviewcontroller。以下是我为理智起见所做的工作:

Iphone 未从不可见的uiwebview调用uiwebviewdelegate 我试图避免在UIWebVIEW加载内容时显示的空白窗口。我不想在UIWebView上放置背景,我只想在当前窗口上放置一个HUD,然后在加载内容时推送包含UIWebView的新uiviewcontroller。以下是我为理智起见所做的工作:,iphone,objective-c,uiwebview,uiwebviewdelegate,Iphone,Objective C,Uiwebview,Uiwebviewdelegate,第一视图: MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; myVC.parentController = self.navigationController; UIView *myView = [myVC view]; // Force view to load MyViewController *myVC = [[MyViewCo

第一视图:

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

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


- (void) webViewDidFinishLoad:(UIWebView*) webView {
     [parentController pushViewController:self animated:YES];
}
好的,调用了viewDidLoad,但是没有调用uiwebviewdelegate方法。但是,如果我按下视图控制器

第一视图:

MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
myVC.parentController = self.navigationController;
UIView *myView = [myVC view];      // Force view to load
MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.navigationController myVC animated:YES];
然后调用MyViewController中的所有uiwebviewdelegate方法


我被卡住了。

我不知道您的应用程序的具体要求,但通常更好的做法是先推视图控制器,然后在加载内容时在新的视图控制器上显示HUD。您可以在viewDidLoad中将HUD添加到视图控制器的视图中,并在webView的webViewDidFinishLoad回调方法中删除HUD


如果您还没有这样做,请确保您正在后台线程中加载web视图的内容,以便在加载内容时不会阻止主UI线程,否则用户会觉得您的应用程序已暂时冻结。

您所说的就是我所做的,但我遇到的问题是,当我按下视图控制器时,uiwebview需要0.5到4秒来加载内容,而用户在这段时间只看到一个空白的白色窗口。我可以在加载html内容时设置背景图像,但我认为最好在第一个视图上弹出一个HUD,直到加载内容,然后显示uiwebview。。。我认为在0.5秒的场景中,一些间隙图像会分散注意力。我同意显示HUD是一个不错的选择,但我仍然认为,在segue发生后加载内容时,最好在目标viewcontroller上显示HUD。如果您仍然希望在第一个viewcontroller上显示HUD,那么我会让您的第一个viewcontroller负责请求htmlString,然后当收到响应时,将响应字符串设置为目标viewcontroller上的属性,然后再将其推到导航堆栈上。我想我们有点偏离轨道。。。或者我可能错过了什么。我的问题是,在推送目标viewcontroller之前,不会调用任何uiwebviewdelegate方法。一旦uiwebview拥有HTML,uiwebview仍然需要几秒钟的时间来加载链接/图像,在这段时间里我有一个空白的白色屏幕。我想知道为什么没有调用委托方法。。。或者找到其他方法等待uiwebview加载内容后再显示。