[英]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.