Iphone 检查是否加载了UIWebView
我在一个选项卡中有一个UIWebView,该选项卡在viewDidLoad中加载,但如果用户点击其他选项卡,加载将中断并停止Iphone 检查是否加载了UIWebView,iphone,uiwebview,Iphone,Uiwebview,我在一个选项卡中有一个UIWebView,该选项卡在viewDidLoad中加载,但如果用户点击其他选项卡,加载将中断并停止 -(void)webView:(UIWebView*)webView didFailLoadWithError:(NSError*)error将被调用,但我想知道,如果用户再次点击上一个选项卡,如何检查webView是否已加载,如果未加载,它将重新加载,类似这样的事情 -(void)viewWillAppear:(BOOL)animated { if (!we
-(void)webView:(UIWebView*)webView didFailLoadWithError:(NSError*)error将被调用,但我想知道,如果用户再次点击上一个选项卡,如何检查webView是否已加载,如果未加载,它将重新加载,类似这样的事情
-(void)viewWillAppear:(BOOL)animated
{
if (!webView)
{
NSURL *url = [NSURL URLWithString:@"url"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
}
但它不工作,请帮助?UIWebview有一个webViewDidFinishLoad委托方法。设置一个布尔值以指示此操作已完成
- (void)webViewDidStartLoad:(UIWebView *)webView {
webViewDidFinishLoadBool = NO;
loadFailedBool = NO;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
loadFailedBool = YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
if (!loadFailedBool)
webViewDidFinishLoadBool = YES;
}
如果您还没有让它工作,下面是一个工作示例。加载失败时,它还会显示警报,并且警报仅显示一次
标题:
@interface MyViewController : UIViewController <UIWebViewDelegate> {
BOOL wasLoaded;
BOOL alertWasShown;
}
@property (nonatomic, retain) IBOutlet UIWebView *myWebView;
@end
我希望这会有所帮助。对于具有多个框架的页面,还应使用UIWebView.loading属性
苹果的文档:@property(非原子,只读,getter=isload)BOOL-load
一个布尔值,指示接收器是否已完成加载内容
如果是,则接收器仍在加载内容;否则,不会
在iOS6(beta 4)中,苹果似乎也修复了该属性的一些问题 原来的问题确实是多年前发布的。
最近,我不得不为这个问题找到一个可靠的解决方案
以下是对我有效的解决方案:
将UIWebView替换为WKWebWiew李>
在处理“didFinishNavigation”委托方法时添加了“evaluateJavaScript”代码
完整的代码是:
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{
[webView evaluateJavaScript:@"document.body.innerHTML" completionHandler:^(id result, NSError *error) {
if (result != nil) {
// Call your method here
}
if(error) {
NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
}
}];
}
哪个部分不工作?是否调用委托方法?是的,但问题是webviewdidfinishload在加载失败后被调用,因此bool将始终为YESHmmm。。那么试试我对上述代码所做的更新。它设置了另一个bool来表示失败。唯一可行的解决方案(我发现)是:
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{
[webView evaluateJavaScript:@"document.body.innerHTML" completionHandler:^(id result, NSError *error) {
if (result != nil) {
// Call your method here
}
if(error) {
NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
}
}];
}