我现在有一个非常简单的应用程序,我想在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];
}
答案 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秒之后(真的少于它),它将被设置,因此您可以依赖该打印输出值来查看视图层次结构的样子。