我很长时间以来一直在成功使用webView委托.但最近我遇到了这个代表的奇怪问题.在我目前的项目中,我试图从webview访问我的路由器.我只在URL内传递用户名和密码.下面是加载请求代码.
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://uname:password@192.168.1.1"]]];
Run Code Online (Sandbox Code Playgroud)
这将调用webView委托方法(webViewDidFinishLoad和webViewDidStartLoad)5次.这是预期的吗?当我通过像google.com这样的简单网址时,它按预期工作.但是使用用户名和密码为什么这些委托方法会被调用5次?
如果这种行为是正确的,那么我需要知道它为什么只调用5次.原因是,在我的程序中 - 我在webViewDidFinishLoad方法中调用performSegueWithIdentifier,并且在当前形式中它调用segue 5次.对于解决方法,我可以维护计数,并且仅在第5次计数时调用performSegueWithIdentifier.
谢谢
Tom*_*ift 14
webViewDidStartLoad/webViewDidFinishLoad每个HTML框架调用一次.您的内容可能包含多个框架.
webViewDidStartLoad: 在Web视图开始加载框架后发送.
小智 6
这个方法对我有用...... :)
#pragma mark UI Web View Delegate
NSInteger webViewLoads;
//a web view starts loading
- (void)webViewDidStartLoad:(UIWebView *)webView{
webViewLoads++;
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[SVProgressHUD showWithStatus:@"Loading..." maskType:SVProgressHUDMaskTypeBlack];
}
//web view finishes loading
- (void)webViewDidFinishLoad:(UIWebView *)webView{
webViewLoads--;
[self performSelector:@selector(webViewFinishLoadWithCondition) withObject:nil afterDelay:0.5];
}
//web view handling error
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
webViewLoads--;
NSLog(@"Web View Did Fail Load With Error : %@",error);
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[SVProgressHUD dismiss];
}
-(void)webViewFinishLoadWithCondition{
if(webViewLoads==0){
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[SVProgressHUD dismiss];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8063 次 |
| 最近记录: |