无法访问 webViewDidStartLoad 内的 UIWebView 的请求对象

Posted

技术标签:

【中文标题】无法访问 webViewDidStartLoad 内的 UIWebView 的请求对象【英文标题】:Not able to access request object of UIWebView inside webViewDidStartLoad 【发布时间】:2012-02-25 12:40:01 【问题描述】:

我正在尝试通过以下方式访问 webViewDidStartLoad 中 UIWebView 的请求对象:

- (void) webViewDidStartLoad:(UIWebView *)webView 
    NSLog(@"req : %@", [webView request]);
    -----
    -----

它在控制台中显示以下内容: 请求:(空)

以上可能还是我做错了什么? 否决票

我不想在webView:shouldStartLoadWithRequest:)request navigationType: 中使用它,因为goBackgoForward 方法不会始终调用此方法

【问题讨论】:

如何设置 webView 和请求? 我已经从 IB 添加了 WebView 并将其委托设置为我实现 UIWebView 委托方法的控制器类之一 【参考方案1】:

看来你还是得考虑shouldStartLoadWithRequest

做了一些测试,看起来[webView request] 在委托方法中“落后了一步”。

这是代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

    NSLog(@"req1a : %@", [request URL]);    
    NSLog(@"req1b : %@", [[webView request] URL]);    

    return YES;


- (void) webViewDidStartLoad:(UIWebView *)webView 

    NSLog(@"req2 : %@", [[webView request] URL]);    

这是初始(about:blank)和点击后(一些视频流,不是实际打印输出)请求的结果:

初始请求:

req1a : about:blank

req1b : (null)

请求2:

点击链接后:

req1a : xttp://origin.biokoda.tv/...

req1b : about:blank

req2 : about:blank

看起来[webview request] 正在保留上次加载的请求。

【讨论】:

是的,你是对的。我也研究过,发现要么我们必须使用 shouldStartLoadWithRequest 方法,要么使用 webViewDidFinishLoad 方法。不知道webViewDidStartLoad中不允许访问的原因。谢谢。标记你是正确的。

以上是关于无法访问 webViewDidStartLoad 内的 UIWebView 的请求对象的主要内容,如果未能解决你的问题,请参考以下文章

未调用 UIWebView webViewDidLoadFinish 方法

1111

带有自定义图像的活动指示器

iPhone SDK - WebView 活动指示器

win10 更新后 无法访问共享

apache 别人无法访问