如何在html文件上链接本地pdf文件 - 在UIWebView上显示html文件

时间:2012-05-11 09:52:57

标签: ios uiwebview

我正在使用以下代码在我的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; 
    }
}

1 个答案:

答案 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;
}