关于iOS开发中使用WKWebView拨打电话的问题

在iOS开发中遇到WKWebView点击电话号码无反应的问题,原因是WKWebView默认禁止拨打电话。通过遵循WKNavigationDelegate,使用decidePolicyForNavigationAction方法解决,但发现可以更直接使用UIApplication的openURL方法。然而,openURL已废弃,使用新方法openURL:options:completionHandler在iOS10以下版本可能导致闪退,需要处理版本兼容问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做公司的项目,发现一个显示电话号码的cell点击后没反应,按照逻辑应该是点击之后弹出拨号界面的,遂前往相关的类里面查看代码,发现上一个人在cell的点击事件里是这样写的:
NSString *phoneStr = [NSString stringWithFormat:@"tel:%@",phone]; 
WKWebView * callWebview = [[WKWebView alloc] init];
[callWebview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:phoneStr]]];
[self.view addSubview:callWebview];

初一看,没啥问题啊,以前加载URL都是这样写的,为什么点击之后没反应呢?

正当我百思不得其解之时,猛然想到一个问题,以前加载URL都是用UIWebView写的,难道是iOS8.0带来的新控件——WKWebView的原因?

于是本着实验的心态,把WKWebView改成UIWebView试了试,居然能弹出拨号的对话框了,看来就是WKWebView的问题了,于是上网查了下WKWebView的特性,果然,是因为WKWebView默认禁止了跳转到appStore, 拨打电话, 唤起邮箱等一系列操作,而这些操作UIWebView是默认支持的。(不知道为什么这么做,难道是为了更安全?)

估计是上一个开发人员响应苹果的号召,积极把UIWebView改成WKWebView,却没想到苹果在WKWebView上放了一个大坑…更坑的是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值