簡體   English   中英

iOS 8.4.1打破了UIWebView嗎?

[英]iOS 8.4.1 broke UIWebView?

我繼承了一個使用UIWebView的項目,該項目未顯示給用戶以加載對JS文件的引用來加載HTML以進行計算,並且已經進行了相當長的時間沒有問題。

我已驗證JS文件,HTML和代碼未更改。

從iOS 8.4.1 8月13日發行起,此部分代碼的問題開始出現在客戶面前。

- (void)loadCompleteHTML:(NSString*)completeHTML {
    self.caculateWebView = [[UIWebView alloc] init];
    self.caculateWebView.delegate = self;
    [self.caculateWebView loadHTMLString:completeHTML baseURL:nil];
}

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

    if ([[request.URL.scheme lowercaseString] isEqualToString:@"success"]) {
        //do something with the success
        .
        .
        return NO;

    } else if ([[request.URL.scheme lowercaseString] isEqualToString:@"fail"]) {
        //do something with the fail
        .
        .
        return NO;
    }

    return YES;

}

它沒有返回“成功”也沒有返回“失敗”,此HTML / JS可能僅有的兩個結論是這兩個中的一個。

通過記錄request.URL.absoluteString ,我看到iOS 8.4.1 UIWebView在加載時突然調用about:blank作為第一個URL。 我的解決方案是要求UIWebView僅在第一次時重新加載。

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

    BOOL calledForReload = NO;

    if ([[request.URL.scheme lowercaseString] isEqualToString:@"success"]) {
        //do something with the success
        .
        .
        return NO;

    } else if ([[request.URL.scheme lowercaseString] isEqualToString:@"fail"]) {
        //do something with the fail
        .
        .
        return NO;
    } else if (!calledForReload) {
        //call for reload
        calledForReload = YES;
        [webView reload];
    }

    return YES;

}

希望我對這個問題的解決方案將對像我一樣傻眼的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM