我正在构建一个应用程序,它会向用户显示一些新闻简报。新闻简报显示在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