ios App加载网页,点击网页链接调用App处理

一、如何在APP里加载本地html文件内容:

首先准备一个html文件,比如内容如下:

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <title>title</title>
</head>
<body>

<p>
    <a href=“http://www.ABC.com”>go to app</a>
</p>
</body>
</html>

接下来,在APP里定义一个UIWebView,用来显示html文件内容:

//定义一个webview
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, 375/WI * WIDTH, 667/HI * HEIGHT)];
//设置背景色
webView.backgroundColor = [UIColor clearColor];

//加载名为index.html的文件
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"index.html" withExtension:nil];
NSURLRequest *request = [NSURLRequest requestWithURL:fileURL];
[webView loadRequest:request];

//控制缩放以适应屏幕
[webView setScalesPageToFit:YES];

//将webview添加到主屏幕
[self.view addSubview:webView];

上面的代码实现了加载html的内容,如果需要点击html的链接,跳转到APP页面,需要加上下面这一行设置:

webView.delegate = self;

如果加上这一行之后会报incompatible type错误,需要把.h文件更改如下,其中MyViewController换成自己的ViewController名字:

@interface MyViewController : UIViewController<UIWebViewDelegate>

并且实现如下函数:

- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

    if (navigationType == UIWebViewNavigationTypeLinkClicked) {//点击了链接
    //这里实现跳转的代码
    NSString *url = [[request URL] absoluteString];//得到链接
    NSRange range = [url rangeOfString:@"ABC"];//链接是否包含特征字符串
    if (range.location != NSNotFound) {
        //XXX APP处理
        return NO;   // 返回NO说明不让链接跳转
    }
    }
    return YES;
}

这样就完成了点击链接跳转到APP处理的功能。
如果点击网页里的包含“ABC”的链接,则会进入上面XXX处App的处理逻辑。

猜你喜欢

转载自blog.csdn.net/fenggering/article/details/79140870
今日推荐