Experience with UIWebView(iOS UIWebView截取的一些使用经验)

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;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值