无法在webViewDidStartLoad中访问UIWebView的请求对象

时间:2012-02-25 12:40:01

标签: objective-c ios cocoa-touch uiwebview nsurlrequest

我试图以下列方式访问webViewDidStartLoad中UIWebView的请求对象:

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

它在控制台中显示以下内容:   req:(null)

以上是否可行或我做错了什么? 投票

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

1 个答案:

答案 0 :(得分: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)

req2:

点击链接后

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

req1b:about:blank

req2:about:blank

看起来[webview request]持有上次加载的请求。