使用UIwebView加载URL时出现问题

时间:2011-07-05 19:12:00

标签: iphone ios uiwebview

我现在有一个非常简单的应用程序,我想在UIwebView中加载一个URL。然而,我得到的只是一个空白页面,从我可以告诉它只是没有尝试加载网址。

我已经发布了我在下面的.h和.m文件中添加的代码,让你们看看发生了什么。它确实加载了Web视图而不是url。

希望我已经解释过这个好了。

谢谢

.h文件

@interface StaffsAirsoftAppViewController : UIViewController {

IBOutlet UIWebView *webView;
IBOutlet UIActivityIndicatorView *active;


}

.m文件

-(void)viewDidLoad {

[super viewDidLoad];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(checkLoad) userInfo:nil repeats:YES];
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(checkNotLoad) userInfo:nil repeats:YES];


}

-(void)checkLoad {

if(webView.loading) {
    [active startAnimating];
}

}

-(void)checkNotLoad {
if(!(webView.loading)) {
    [active stopAnimating];



}

2 个答案:

答案 0 :(得分:1)

您应该使用webview delegate方法。

– webView:shouldStartLoadWithRequest:navigationType:
– webViewDidStartLoad:
– webViewDidFinishLoad:

答案 1 :(得分:0)

除了Preveen关于使用委托的建议之外,您还可以检查以确认UIWebView在屏幕上可见。如果您只是创建UIWebView,但不将其添加到视图层次结构(在代码或nib文件中),则用户将永远不会看到它。如果您忘记将视图控制器的视图添加为应用程序窗口的子视图,这也可能是一个问题。

检查这一点的快速方法是:

webView.backgroundColor = [UIColor redColor];
viewDidLoad方法中的

。现在,即使页面没有加载,你也应该看到红色。如果不是,则您的视图层次结构未正确设置。查看视图层次结构实际 的一种方法是在应用程序委托中使用这样的代码:

- (void)printViewHierarchy {
  NSLog(@"%@", [self.window recursiveDescription]);  // Ignore compiler warning.
}

// (inside your didFinishLaunching... method:
  [self performSelector:@selector(printViewHierarchy)
             withObject:nil
             afterDelay:1.0];

调用具有延迟1.0的方法的原因是为nib文件提供加载的机会 - 它们执行异步加载,因此如果立即打印出视图层次结构,它可能还不完整。在1秒之后(真的少于它),它将被设置,因此您可以依赖该打印输出值来查看视图层次结构的样子。