從蘋果公司的文檔:
NSURLErrorCancelled (-999)
"當(dāng)異步加載取消返回。當(dāng)它執(zhí)行取消操作上加載資源時(shí),Web 工具包框架委托將收到此錯(cuò)誤。請(qǐng)注意,NSURLConnection 或 NSURLDownload 委托不會(huì)收到此錯(cuò)誤如果取消下載。"
所以,最有可能為這種情況發(fā)生的情況為您加載請(qǐng)求,然后另一個(gè) (或相同),第一完成之前。這可能發(fā)生。例如,如果調(diào)用loadRequest(或loadHTMLString) 這樣的方法在viewDidAppear:可以調(diào)用多次。這也據(jù)報(bào)發(fā)生如果你快速點(diǎn)擊 2 鏈接在UIWebView。
所以,一般的建議是審查如何以及在何處你調(diào)用loadRequest(或loadHTMLString),并可能提供一些代碼。
為排除此故障,本人建議將以下痕跡添加到您的 web 視圖委托:
- (void)webViewDidStartLoad:(UIWebView *)webView {
NSLog(@"Starting to download request: %@", [webView.request.URL absoluteString]);
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"Finished downloading request: %@", [webView.request.URL absoluteString]);
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
if ([error code] == NSURLErrorCancelled)
NSLog(@"Canceled request: %@", [webView.request.URL absoluteString]);
}
如果您檢查輸出,您應(yīng)該看到更清楚發(fā)生了什么事。如果您粘貼輸出,我們可以試著進(jìn)一步幫助你的

今天在調(diào)試一個(gè)加載UIWebView頁面的問題,發(fā)現(xiàn)無法加載,瀏覽器里能正常打開,錯(cuò)誤信息為
Domain=WebKitErrorDomain Code=101 “The operation couldn’t be completed. (WebKitErrorDomain error 101.)”
原因在于進(jìn)行url encode的NSString中含有未轉(zhuǎn)義字符。
未轉(zhuǎn)義字符有很多,空格、豎線、百分號(hào)、中文字等算作未轉(zhuǎn)義字符,轉(zhuǎn)義后會(huì)成為 % 之類的字符。
如果確定url中均為未轉(zhuǎn)義的字符,則可以用如下方式簡便的方式進(jìn)行url encode
NSString*encodedString=[siteUrlstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL*weburl=[NSURLURLWithString:encodedString];
像我的這種比較復(fù)雜的url,后面跟上rsa簽名的情況,用上面的一種方法會(huì)將rsa簽名中的%同樣進(jìn)行轉(zhuǎn)義一遍。
所以這里就需要找出其中可能會(huì)包含的未轉(zhuǎn)義字符進(jìn)行單獨(dú)的轉(zhuǎn)義,替換。
比如我就是將所有的空格替換為dash(-)。
// convert blank, etc. charactor to UTF8
NSMutableString*uglyMutableString=[[NSMutableStringalloc]initWithString:uglyString];
NSRangerange=[uglyMutableStringrangeOfString:@" "];
while(!(range.location==NSNotFound&&range.length==0)){
[uglyMutableStringreplaceCharactersInRange:rangewithString:@"-"];
range=[uglyMutableStringrangeOfString:@" "];
}
NSString*cleanString=[NSStringstringWithString:uglyMutableString];
returncleanString;