博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Experience with UIWebView(iOS UIWebView截取的一些使用经验)
阅读量:3754 次
发布时间:2019-05-22

本文共 2282 字,大约阅读时间需要 7 分钟。

Maybe you can find some experience, you didn’t pay attention to when you use UIWebView

  • 1.UIWebView methods and property
  • 2.UIWebViewDelegate methods
  • 3.Use notes

UIWebView methods

  • (void)loadData:(NSData )data MIMEType:(NSString )MIMEType textEncodingName:(NSString )encodingName baseURL:(NSURL )baseURL(用的比较少)
  • (void)loadHTMLString:(NSString )string baseURL:(NSURL )baseURL(根据给出的一段html字符串数据, 通过数据来源的url展示webView界面)
  • (void)loadRequest:(NSURLRequest *)request (直接使用url展示webView)
  • @property(nonatomic, readonly, strong) NSURLRequest *request(比较有用的属性)
NSString *str = request.URL.absoluteString /** 可以直接拿出request中的URL, 有时候可能会用到 */

UIWebViewDelegate methods

  • (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType(最主要的代理方法, 用于截取webView每次跳转, 可以根据两个参数判, 断是否跳转到正常的web页面还是跳转到自己写的原生页面)
  • @param request : The content location(请求)
  • @param navigationType : The type of user acti, on that started the load request(跳转类型详细看下面)
    • UIWebViewNavigationTypeLinkClicked, 用户触击了一个链接。
    • UIWebViewNavigationTypeFormSubmitted, 用户提交了一个表单。
    • UIWebViewNavigationTypeBackForward, 用户触击前进或返回按钮。
    • UIWebViewNavigationTypeReload, 用户触击重新加载的按钮。
    • UIWebViewNavigationTypeFormResubmitted, 用户重复提交表单
    • UIWebViewNavigationTypeOther, 发生其它行为。

Use notes

  • 这是使用webView遇到的一种情况, web页面里有直接唤起电话通话和QQ通话的语句, 但是我们在iOS中使用webView无法直接拿过来套用, 所以就有了以下的代码。
  • 具体思路是通过代理方法截取每次webView的request, 通过判断request的URL来操作, 当遇到用户使用web的QQ或者直接拨打电话时, 断开webView的请求, 走自己写的iOS方法代码如下:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {/* QQURL PHONEWEBURL..是宏定义, 实际以自己代码为准 */    NSString *tempStr = [request URL].absoluteString; /** 获取抓到的请求URL用于判断 */    if ([tempStr isEqualToString:QQURL]) { /** 如果来的请求是QQ则走这里 */    /* iOS直接唤醒手机端QQ并发起会话 */        UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];        NSURL *url = [NSURL URLWithString:PHONEIOSURL];        NSURLRequest *requestQQ = [NSURLRequest requestWithURL:url];        webView.delegate = self;        [webView loadRequest:requestQQ];        [self.view addSubview:webView];        return NO;    } else if ([tempStr isEqualToString:PHONEWEBURL]) { /** 如果来的请求是拨打电话则走这里 */        [self callPhone];        return NO;    }    return YES;}

转载地址:http://nlvsn.baihongyu.com/

你可能感兴趣的文章
小白都能看懂的DNS解析过程
查看>>
HTTP和HTTPS的区别?描述HTTPS的工作过程
查看>>
简述一下HTTP的状态码
查看>>
20210227vulhub靶场之环境配置---无法获得靶机IP的疑难解决方式(可以解决VBox和VMware不兼容问题)
查看>>
20210226web渗透学习之SSRF总结
查看>>
2021-06-01web渗透学习之sqlserver提权(转)
查看>>
大数据之Flume
查看>>
关于高可用配置hbase中出现的问题:Name or service not known
查看>>
centOs7下hadoop3.2.2namenode故障不自动转移
查看>>
在高可用的hive下执行bin/schematool -dbType mysql -initSchema报错
查看>>
hbase配置高可用
查看>>
linux下卸载和安装mysql
查看>>
在初始化namenode时:java.net.NoRouteToHostException: 没有到主机的路由;
查看>>
hive-hbase
查看>>
浅谈scala-API的基础概念及简单例子
查看>>
spark的历史服务器配置
查看>>
spark的API操作
查看>>
SparkSql
查看>>
SparkRdd-scala版本
查看>>
spark常见算子
查看>>