繁体   English   中英

使用 UIwebView 加载 URL 时出现问题

[英]Problem loading URL with UIwebView

目前我有一个非常简单的应用程序,我试图在 UIwebView 中加载 url。 然而,我得到的只是一个空白页,据我所知,它根本没有尝试加载 url。

我已经发布了我从下面的 my.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];



}

您应该使用相同的webview 委托方法。

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

除了 Preveen 对使用委托的建议之外,您还可以检查以验证 UIWebView 在屏幕上是否可见。 如果您只是创建一个 UIWebView,但不将其添加到视图层次结构中(无论是在代码中还是在 nib 文件中),那么用户将永远看不到它。 例如,如果您忘记将视图控制器的视图添加为应用程序 window 的子视图,这也可能是一个问题。

一种快速检查方法是:

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 秒后(实际上比这还短),它将被设置,因此您可以依靠该打印输出的值来查看您的视图层次结构是什么样的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM