使用 UIWebView 显示 html 文件

Posted

技术标签:

【中文标题】使用 UIWebView 显示 html 文件【英文标题】:Showing html file using UIWebView 【发布时间】:2013-02-28 06:34:53 【问题描述】:

我创建了一个UIWebView 并使用了一个html 文件来显示一些内容。但是当我运行它而不是显示内容时,只有整个 HTML 文件编码出现在 WebView 中。请帮助并告诉我出了什么问题。

UIWebView *ingradients= [[UIWebView alloc]init];
    [ingradients setFrame:CGRectMake(10, 170, 300, 300)];
    [ingradients loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"htmlfile" ofType:@"html"]isDirectory:NO]]];
    ingradients.delegate=self;
    [self.view addSubview:ingradients];

我的 htmlfile.html 包含

<html>
<body>
<p><strong>Ingredients</strong></p>
</body>
</html>

不是以粗体显示“成分”,而是显示htmlfile.html

的整个编码

【问题讨论】:

【参考方案1】:

在您的代码中,您始终包含 HTML 代码,因为您的请求始终返回文件 htmlfile,扩展名为 .html

如果您想从HTML 内容中获得特定价值,您需要使用Hpple Parce HTML 内容。这也是 documentation with exmple 用于解析 HTML 内容。

在您的情况下,您使用:(通过使用Hpple

TFHpple *dataParser = [TFHpple hppleWithHTMLData:placesData];

    // name of place
NSString *XpathQueryString = @"//p/strong";
NSArray *listOfdata= [dataParser searchWithXPathQuery: XpathQueryString];

【讨论】:

刚才我注意到,当我在浏览器中打开该 html 文件时,它也会显示整个编码。你能告诉我会是什么问题吗? 我实际上尝试了 loadHTMLstring 方法并将 html 编码作为字符串参数放在那里,并且工作正常.... :)【参考方案2】:

这很奇怪,我有类似的代码,html 被呈现为富文本而不是纯文本(就像你一样),我唯一的区别是使用 fileURLWithPath: 而不是 fileURLWithPath:isDirectory:。这是我的代码:

NSString *localFilePath = [[NSBundle mainBundle] pathForResource:@"about" ofType:@"html"];
NSURLRequest *localRequest = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:localFilePath]];
[_aboutWebView loadRequest:localRequest];

也许你对文件编码有一些问题,但据我猜测,情况不应该如此。

【讨论】:

刚才我注意到,当我在浏览器中打开该 html 文件时,它也会显示整个编码。你能告诉我会是什么问题吗?【参考方案3】:

试试这个代码:

- (NSString *) rootPath
    return [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) lastObject];


- (NSString *) pathFoResourse : (NSString *) resourseName ofType: (NSString *)type
    NSString *path = [[MMSupport rootPath] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", resourseName, type]];
    if (![[NSFileManager defaultManager] fileExistsAtPath:path]) 
        path = [[NSBundle mainBundle] pathForResource:resourseName ofType:type];
    
    NSLog(@"**path:%@**", path);
    return path;


- (void) loadDataToWebView : (CGRect) frame
    NSString *htmlString =  [NSstring stringWithContentsOfFile:[MMSupport pathFoResourse:@"filename" ofType:@"html"] encoding:NSUTF8StringEncoding) error:nil];
    UIWebView *webView = [[UIWebView alloc] initWithFrame:frame];
    [webView loadHTMLString:htmlString baseURL:nil];

【讨论】:

以上是关于使用 UIWebView 显示 html 文件的主要内容,如果未能解决你的问题,请参考以下文章

带有本地 HTML 文件的 UIWebView 不显示图像

使 UIWebView 成为 UITableviewCell 的一部分

IOS开发-UI学习-UIWebView,简单浏览器的制作

Xcode - UIWebview 不显示 CSS、Javascript 或外部内容

我们可以在iOS上使用UIWebView打开pdf文件吗?

我们可以在iOS上使用UIWebView打开pdf文件吗?