iOS10:每次不调用UIWebView webViewDidFinishLoad吗?

时间:2018-10-30 16:09:08

标签: objective-c uiwebview

我知道iOS10中的UIWebView已过时,您应该使用WKWebView。但是,这是一个巨大的项目,我只是接手解决了一些错误,并且无法重建所有内容。

因此,在iOS9、8等平台上,它运行完美,我们什么也没做。现在我们有一个奇怪的错误。我们尝试从公司的Intranet网站下载一些文档。用户凭据输入到应用程序中,并通过发布请求发送到其服务器。整个登录步骤会将用户转发到另外两个链接,直到完成所有cookie和登录步骤。然后将调用并下载包含文档的几个链接。

我认为我们的问题在于登录步骤和转发。这些是我们代码的一些“补丁”:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSLog(@"should start - %@, nav type %ld", request.URL.absoluteString, (long)navigationType);
    return YES;
}

- (void)webViewDidStartLoad:(UIWebView *)webView {
    NSLog(@"webViewDidStartLoad is called: %ld", (long)self.webViewLoads + 1);
    self.webViewLoads ++;
}
 */
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    if(![self isManualLoginAndImportRequired]){
        NSLog(@"WebViewLoads: %ld", (long)self.webViewLoads);
        NSLog(@"isLoading: %df", webView.isLoading);
        NSLog(@"loading: %df", webView.loading);
        self.webViewLoads --;

        if(webView.isLoading || self.webViewLoads > 0) {
            return;
        }
        if(webView.isLoading) {
            return;
        }
        if (webView.loading) {
            return;
        }

我要显示的内容:只有一个链接(登录链接)被调用。然后,在登录步骤的每个“前进”期间,在webViewDidStartLoad中,变量self.webViewLoads都会增加一个(self.webViewLoads ++)。为了确定何时真正完成了登录步骤,每次调用webViewDidFinishLoad时都会减小此变量。如前所述,在iOS9中效果很好。但是,在iOS10中,此变量不会递减,只能在最后一次转发后调用。因此,我们永远不会执行webViewDidFinishLoad中的相关代码。 我试图不理会这个变量self.webViewLoads,并且在大多数情况下甚至可以工作。但是在另一些情况下,它会产生错误。

所以我的问题是:为什么在两者之间不再调用webViewDidFinishLoad?对iOS10做了哪些更改,或者我缺少其他变量?

0 个答案:

没有答案
相关问题