我正在構建一個應用程序,它會向用戶顯示一些新聞簡報。新聞簡報顯示在uiWebView中。我正在閱讀來自rss feed的新聞簡報的網址。我解析XML,並在表格視圖中,我有所有的通訊。單擊單元格時,會推送uiWebView並加載新聞簡報。因爲uiWebView沒有打開具有target = _blank的鏈接,我需要用「」替換目標中的_blank。在我的NSOperation下載HTML的內容和下載完成後我替換字符串是這樣的:UIWebView加載解析的html字符串
NSMutableString *page = [[[NSMutableString alloc] initWithData:pageData encoding:NSISOLatin1StringEncoding] autorelease]; [page replaceOccurrencesOfString:@"target=_blank" withString:@"target=""" options:0 range:NSMakeRange(0, [page length])];
我做到這一點後,我加載解析字符串中的web視圖來顯示給用戶。
[myWebView loadHTMLString:page baseURL:[NSURL URLWithString:@""]];
而被的NSOperation下載頁的HUD的內容與活動指示燈和說加載顯示的標籤。下載完成後,HUD將從超級視圖中移除。
到目前爲止這麼好..但在這裏來的問題。我用NSOperation與回調函數,因爲我無法確定最後一次調用webDidFinishLoading(我讀這UIWebView - How to identify the "last" webViewDidFinishLoad message? - 這是我的問題的一部分,但答覆是使用一些蘋果私人類,這是一個問題我)。之後,我在表視圖觸摸單元和簡訊表明,它看起來像它應該,當我在通訊中點擊一個鏈接
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
NSLog(@"WebViewSouldStartWithRequest: %@", urlString);
if (navigationType == UIWebViewNavigationTypeLinkClicked)
{
if(![urlString isEqualToString:@"about:blank"])
{
NSLog(@"FeedViewController: startPageLoad");
activityHud = [[HUDView alloc] initWithFrame:CGRectMake(110, 100, 80, 80)];
[activityHud setText:@"Loading"];
[myWebView addSubview:activityHud];
NSLog(@"FeedViewController: pageUrl = %@", urlString);
[self resetWebView];
[urlLoader loadPageFromUrl:request.URL withCallbackTarget:self withCallbackSelector:@selector(endLoading:)];
}
}
return NO;
}
- (void) endLoading:(NSMutableString *)page { [self resetWebView]; NSLog(@"FeedViewController: endLoading"); [activityHud removeFromSuperview]; [myWebView loadHTMLString:page baseURL:[NSURL URLWithString:@""]]; }
:所以我這樣做,頁面加載了新的請求,解析但在視覺上看起來不像它應該(我在NSLog解析後看了頁面,它有CSS樣式和html標籤,頭部,正文打開和正確關閉)任何人都有這個uiWebView的問題,沒有正確顯示網頁?
我試着用- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{ return YES; }
和加載頁面 - (空)webViewDidFinishLoad:(UIWebView的*)的WebView {}和 - webViewDiStartLoad
但是這些方法被稱爲爲每個在web視圖加載項因此在這些方法中顯示和隱藏HUD並不是一個好的解決方案。
我遇到了一些問題,而使用 - (BOOL)webView的:(UIWebView的*)webView的shouldStartLoadWithRequest:(*的NSURLRequest)請求navigationType:(UIWebViewNavigationType)navigationType {...返回NO}
對於具有示例鏈接像這樣/ BILDER-galerien路徑沒有工作,在我的NSLog收到此對他們
未知的方案,什麼都不做: /BILDER-galerien
但WH恩我使用
- (BOOL)webView的:(UIWebView的*)webView的shouldStartLoadWithRequest:(*的NSURLRequest)請求navigationType:(UIWebViewNavigationType)navigationType {返回是}和didstartLoading和finishLoading的網址被加載,我不知道爲什麼...
另一個問題是德國的特殊字符..在我的第一負載(後中的UITableView按下電池)的頁面解析像它應該是由一個UIWebView但之後,我點擊一個鏈接,並加載也是字符,不能正確解析相應的請求..
能任何人都指向我的好方向?預先感謝您
不要一遍又一遍地回答你自己的問題! – SK9 2011-04-15 09:08:39