如何从WKWebView加载本地化的html文件?

时间:2017-10-07 10:21:09

标签: html ios objective-c wkwebview

第一个StackOverflow问题对我来说......

!! Objective-C !!

我正在更新旧应用并正在使用帮助屏幕。 我选择通过一些html显示一些有用的How-tos主要是为了便于格式化文本(项目符号,颜色,粗体,下划线等...)。 由于应用程序有点复杂,帮助屏幕共有3个: 一个主要信息网页,链接到其他2个详细页面。

Tha app已本地化为英语(基础)和法语。

设置完成后,一切正常,我继续本地化了基本的html文件。

现在,它们整齐地放在Base.lproj和fr.lproj文件中。

但是,当我点击主WebView上另一个页面的链接时,没有任何反应!

有什么想法吗?

由于

以下是我正在使用的一些代码: 在.h文件中:

@interface howToViewController : UIViewController <WKUIDelegate>  
{  
    WKWebView *infoText;  
    NSString *uRLString;  
}  
@property (nonatomic, retain) WKWebView *infoText;

在.m文件中:(由于在通过Storyboard创建时已知的Xcode 9错误,必须以编程方式创建WKWebView)

- (void)viewDidLoad  
{  
    [super viewDidLoad];  
WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
WKWebView *aWebView = [[WKWebView alloc] initWithFrame:self.view.frame  
                                         configuration:theConfiguration];  
aWebView.UIDelegate = self;  
self.infoText = aWebView;  

NSURL *url = [[NSBundle mainBundle] URLForResource:@"infoHTML" withExtension:@"html"];  
NSString *html = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];  
NSURL *baseUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];  

[infoText loadHTMLString:html baseURL:baseUrl];  

[self.view addSubview:infoText];  
}  

在html文件中,文件本地化后不再有效的链接:

<p>3/ More information is available for the respective tabs by pressing the following links :</p>  
    <ul><li><a href="pageOne.html">Limitations</a>  
    </li></ul>  
    <ul><li><a href="pageTwo.html">Fueling</a>  
    </li></ul>  

1 个答案:

答案 0 :(得分:0)

从我的某个应用中运行代码。我正在使用NSURLRequest和WKWebView的loadRequest实例方法。我不确定你使用loadHTMLString会出现什么问题:baseURL:但我认为它可能与你为baseURL参数传递的值有关。您是否已清除控制台,然后单步执行该行代码以查看您是否在控制台中收到任何消息?

NSURL *url = [[NSBundle mainBundle] URLForResource: pageString withExtension: @"html"]; 
NSURLRequest *request = [NSURLRequest requestWithURL: url];
[webView loadRequest: request];