我的应用显示使用专门关键字的信息。当用户触摸其中一个关键字时,该应用程序会打开一个UIWebView,提供有关该关键字的其他信息。以下是创建UIWebview的代码:
NSURLRequest * request = [NSURLRequest requestWithURL: currentURL] ;
webView = [[UIWebView alloc] initWithFrame: frame];
webView.scalesPageToFit=YES;
[webView setDelegate: self];
[webView loadRequest:request];
一切都可以正常使用简单的网址" chapter5.html"但是如果URL有一个片段标识符" chapter5.html#section3",那么该页面根本不会打开 - 甚至在第5章的开头也是如此。
我猜测它试图将整个文件用作文件名而失败,因为不存在这样的文件。如果我剥离片段标识符,则会显示页面,但不会显示在正确的位置。有没有办法
答案 0 :(得分:0)
您必须拆分片段标识符(hashTag),然后将其余的URL提供给UIWebview。你可以这样做:
NSRange range = [url rangeOfString: @"#"];
if (range.location == NSNotFound) {
hashTag = nil;
}
else {
hashTag = [url substringFromIndex: range.location];
url = [url substringToIndex:range.location];
}
然后将viewController设置为UIWebViewDelegate并等待被告知页面已加载。加载完成后,您可以使用javascript命令转到hashTag指定的位置:
- (void) webViewDidFinishLoad: (UIWebView *) localWebView {
if (hashTag != nil) {
NSString * javaScript = [[NSString alloc] initWithFormat: @"window.location.hash = '%@'", hashTag];
[webView stringByEvaluatingJavaScriptFromString:javaScript];
hashTag = nil;
}
}