如何使用UIWebView加载包含散列片段"#"的NSURL?

For*_*est 10 nsurl

给出一个像index.html这样的本地URL地址

现在我需要用UIWebView它来加载iPad.我按照以下步骤操作:

  1. 创建NSURL

    NSURL *url = [NSURL fileURLWithPath:@"http://mysite.com#page1"];
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用UIWebView加载本地HTML/JS/CSS等

    [webView loadRequest:[NSURLRequest requestWithURL:url]];
    
    Run Code Online (Sandbox Code Playgroud)

但是它不起作用,因为"#"被转换为"%23",所以URL字符串是

http://mysite.com%23page1

我的问题是,如何解决这个自动转换问题,并让UIWebView访问包含哈希片段"#"的URL?

vag*_*ase 11

用户URLWithString将片段附加到您的网址,如下所示:

*NSURL *url = [NSURL fileURLWithPath:htmlFilePath];
url = [NSURL URLWithString:[NSString stringWithFormat:@"#%@", @"yourFragmentHere"] relativeToURL:url];*
Run Code Online (Sandbox Code Playgroud)

希望它会有所帮助:)


编辑:Swift 3版本:

var url = URL(fileURLWithPath: htmlFilePath)
url = URL(string: "#yourFragmentHere", relativeTo: url)
Run Code Online (Sandbox Code Playgroud)


saa*_*nib 0

它没有在 Web 视图中加载,因为您使用了错误的方法来创建 NSURL 对象,fileURLWithPath 用于系统路径。使用这个——

NSURL *url = [NSURL URLWithString:@"http://mysite.com#page1"];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

[webView loadRequest:request];
Run Code Online (Sandbox Code Playgroud)

有关 NSURL 的更多信息,请阅读文档 -

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html