我正在使用以下代码在我的UiWebView上显示本地html文件。
NSString *path = [[NSBundle mainBundle] pathForResource:@"test.html"];
NSString* htmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:bundlePath];
[_webView loadHTMLString:htmlString baseURL:baseURL];
[_webView setBackgroundColor:[UIColor clearColor]];
应用正确显示html。在test.html中有一个指向本地pdf文件hello.pdf的链接。此pdf已添加到项目中。但是当我点击链接时没有任何反应。我想在用户点击链接时在我的网页视图上加载pdf。
我想使用UIWebView委托将对互联网超链接的请求(例如http://www.google.com)发送到Safari应用程序。
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
{
NSLog(@"%@",inRequest.URL.absoluteString);
if([inRequest.URL.absoluteString rangeOfString:@"hello.pdf"].location == NSNotFound)
{
if ( inType == UIWebViewNavigationTypeLinkClicked )
{
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
return YES;
}
else
{
return NO;
}
}
答案 0 :(得分:0)
您应该更清楚地说明您希望在Safari和本地超链接中加载互联网超链接以加载UIWebView
。
我刚试过这个,它可以做你想要的:
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
{
if (inType == UIWebViewNavigationTypeLinkClicked) {
if ([inRequest.URL.absoluteString rangeOfString:@"http://"].location == NSNotFound) {
return YES;
}
else {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
}
else {
return YES;
}
}
这仅适用于加载UIWebView
中不包含超文本类型协议前缀(http://)的链接。
提示:确保您已在UIWebView
方法中为viewDidLoad
设置了委托。
- (void)viewDidLoad
{
[super viewDidLoad];
webView.delegate = self;
}