赶着下班就不多说了, 初始化 UIWebView 名为 _phoneCallWebView,调用如下方法,注意下方 红色区域

#pragma mark -----打电话-------------

- (void)openPhoneCallViewWithphoneNumber:(NSString *)phoneNum

{

if (_phoneCallWebView == nil) {

_phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];

}

NSString *newPhoneString = [要调用打电话功能的ViewController dealWithPhoneNumber:phoneNum];

if ([要调用打电话功能的ViewController isMobileNumber:newPhoneString]) {

NSURL* dialUrl = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", newPhoneString]];

if ([[UIApplication sharedApplication] canOpenURL:dialUrl])

{

if (_phoneCallWebView) {

[_phoneCallWebView loadRequest:[NSURLRequest requestWithURL:dialUrl]];

}

else{

[[UIApplication sharedApplication] openURL:dialUrl];

}

}

else

{

UIAlertController  *alert = [UIAlertController alertControllerWithTitle:@"温馨提示" message:@"设备不支持" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *cacelAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil];

[alert addAction:cacelAction];

[self presentViewController:alert animated:YES completion:nil];

alert = nil;

}

} else {

UIAlertController  *alert = [UIAlertController alertControllerWithTitle:@"温馨提示" message:@"您选择的号码不合法" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *cacelAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil];

[alert addAction:cacelAction];

[self presentViewController:alert animated:YES completion:nil];

alert = nil;

}

}

#pragma mark ------处理电话号码

+ (NSString *)dealWithPhoneNumber:(NSString *)phone

{

NSString *newPhone = [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];

return newPhone;

}

#pragma mark------判断是否是电话号码

+ (BOOL)isMobileNumber:(NSString *)mobileNum

{

/**

* 手机号码

* 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188

* 联通:130,131,132,152,155,156,185,186

* 电信:133,1349,153,180,189

*/

NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";

/**

* 中国移动:China Mobile

* 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188

*/

NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";

/**

* 中国联通:China Unicom

* 130,131,132,152,155,156,185,186

*/

NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";

/**

* 中国电信:China Telecom

* 133,1349,153,180,189

*/

NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";

/**

* 大陆地区固话及小灵通

* 区号:010,020,021,022,023,024,025,027,028,029

* 号码:七位或八位

*/

NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";

NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];

NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];

NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];

NSPredicate *regextestphs = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", PHS];

if (([regextestmobile evaluateWithObject:mobileNum] == YES)

|| ([regextestcm evaluateWithObject:mobileNum] == YES)

|| ([regextestct evaluateWithObject:mobileNum] == YES)

|| ([regextestcu evaluateWithObject:mobileNum] == YES)

|| ([regextestphs evaluateWithObject:mobileNum] == YES))

{

return YES;

}

else

{

return YES; //暂时不做检查

}

}

iOS app调用打电话功能相关推荐

  1. 苹果手机 微信PHP问题,安卓、ios APP调用微信支付时,页面出现空白 。(php微信支付,app发起微信支付白屏)?...

    安卓.ios APP调用微信支付时,页面出现空白 我的后端是用php开发的.我是先调用微信的统一下单生成,生成prepay_id预支付订单号,代码如下: public function send_pa ...

  2. iOS App “去评分” 功能的几种实现总结

    2019独角兽企业重金招聘Python工程师标准>>> 通常 App 都会在它的设置页面或者关于页面添加一个"去评分"选项,或者在用户使用 App 过程中适当时机 ...

  3. 连接QuickBooks Online实现于IOS App数据同步功能的个人记录

    公司项目需要用WebService与QBO实现后台数据同步,由于国内没有做过类似第三方产品接口的资料,前前后后找了N久,终于实现功能,现把实现功能步骤贴上来分享: QBO开发者地址(主要用于创建QBO ...

  4. 小程序调用打电话功能

    wx.makePhoneCall({phoneNumber: 15195986666,success: (result) => {},fail: () => {},complete: () ...

  5. iOS app被拒------支付功能审核被拒(虚拟产品)Guideline 3.1.1

    最近在做项目时,涉及用户付费.于是就找来了支付宝和微信支付的集成教程,按照要求分别开通各自开发平台的开发者账号和商户号.在后台加入了支付的支持,一步步的集成和测试,通过后打包上传到App Store ...

  6. iOS 调用系统发短信以及打电话功能

    先介绍一种最简单的方法: 调用打电话功能 [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"tel://100 ...

  7. IOS 程序内调用本地打电话功能-make a phone call

    利用openURL接口来调用打电话功能.代码还具备根据正则表达式判断电话好吗输入的合法性. 1 - (void)makeCall:(NSString *)number 2 { 3 NSString * ...

  8. iOS App Thinning

    iOS App Thinning iOS App瘦身功能,不错的文章: 初探 iOS 9 的 App 瘦身功能 App thinning overview (iOS, tvOS, watchOS) 安 ...

  9. Android相机资源占用,为保护用户隐私Android 11调整相机选项 APP调用相机时只可使用默认相机...

    据外媒报道目前谷歌在 Android 11 测试版里带来新的调整,此次调整是关于安卓系统对于默认相机调用选择的. 在安卓旧版本中当APP调用相机时会罗列用户已经安装的所有相机应用,这当然也包括那些自带 ...

最新文章

  1. mysql的优化之table_open_cache 篇_mysql性能优化之table_open_cache
  2. 微博基于Flink的机器学习实践
  3. 解析三层架构(1)---为什么要分层?
  4. 闯荡北京卖枣的临县人:同有一个“红枣美梦”(2张)
  5. 计算机硬件 OR CX 1,计算机硬件第三章ppt
  6. xtrabackup 官方原理
  7. Win8 Consumer Preview 8250 + VS11 体验
  8. DataGridView绑定对象数组 c# 1614236580
  9. Android开发笔记(四十四)动态UI事件
  10. VB 将文件夹复制到指定目录
  11. Pulseaudio之nemo(二十二)
  12. WIN7获取管理员权限
  13. 计算机物联网软件工程,关于计算机物联网的应用分析
  14. vb 连接 mysql数据库代码_vb连接access数据库方法和代码
  15. 设计系统测试用例时应考虑的类型
  16. Overleaf使用技巧 (latex公式,latex表格,latex图片排版)
  17. css中英文单词换行的问题
  18. Axure下载安装汉化
  19. ThinkPad T14安装系统后,重启经常进不去系统,如何解决
  20. Python|自定义判断质数的函数

热门文章

  1. Openstack九大组件
  2. 西安数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据可视化交互大屏
  3. shell读书笔记9
  4. GORM模型(Model)定义
  5. 通过powershell+winscp在远程服务器上跑本地的代码
  6. Gradle SNAPSHOT 版本更新
  7. java计算机毕业设计跑腿管理系统源程序+mysql+系统+lw文档+远程调试
  8. 脊髓损伤患者需对饮食引起注意
  9. nohup: 重定向标准错误到标准输出
  10. VS2019 找不到资产文件“xxxx\obj\project.assets.json