一、写一个UIAleitView

<span style="color:#cc33cc;"><span style="white-space:pre">    </span>UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:_tellPhone delegate:self cancelButtonTitle:@"拨号" otherButtonTitles:@"取消", nil];[alert show];</span>

二、点击alertView触发

<span style="font-size:14px;color:#cc33cc;">- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{if (buttonIndex != 1) {[self openPhoneCallViewWithphoneNumber:_tellPhone];}
}</span>

三、实现代码,其实这个代码我也没有具体的研究,大家复制过去用就可以实现这个功能了

#pragma mark------拨打电话方法- (void)openPhoneCallViewWithphoneNumber:(NSString *)phoneNum
{if (phoneCallWebView == nil) {phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];}NSString *newPhoneString = [ShowTeacher_ViewController dealWithPhoneNumber:phoneNum];if ([ShowTeacher_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{UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"温馨提示" message:@"设备不支持" delegate:nil cancelButtonTitle:@"确定 " otherButtonTitles:nil, nil];[alert show];alert = nil;}} else {UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"温馨提示" message:@"您选择的号码不合法" delegate:nil cancelButtonTitle:@"确定 " otherButtonTitles:nil, nil];[alert show];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[0235-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 开发中实现打电话功能实用代码相关推荐

  1. iOS开发中经常用的实用代码合集

    iOS开发中经常用的实用代码合集 本文整理了,在iOS开发中我们所遇到一些开发问题的技巧类的代码,让你在开发过程中避免了很多弯路,希望能给你的开发带来帮助和启发. 1.判断邮箱格式是否正确的代码: / ...

  2. iOS开发中一些有用的小代码

    1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @&quo ...

  3. iOS开发中打电话发短信等功能的实现

    在APP开发中,可能会涉及到打电话.发短信.发邮件等功能.比如说,通常一个产品的"关于"页面,会有开发者的联系方式,理想情况下,当用户点击该电话号码时,能够自动的帮用户拨出去,就涉 ...

  4. ios开发中计算代码运算时间_iOS日历、日期、时间的计算

    时间和日历的计算在iOS开发中经常看到,经常看到大家在百度,开源中国等搜索这些答案.今天写个简单的时间和日历有关的计算. 获取一个月的总天数 1.获取当月的天数 - (NSInteger)getNum ...

  5. IOS开发中巧用Photoshop的通道功能

    有时候在IOS开发中需要一些简单的.小的png图片时,便可以自己动手用Photoshop来做了(有时候UI设计师大大也不是那么情愿来给你做这些小东西啊!) 设置一张图片的颜色:可使用魔棒工具选中要改变 ...

  6. ios开发中各种版本、设备的区分的代码

    把开发过程中比较好的内容段做个收藏,如下的内容是关于 ios开发中各种版本.设备的区分的内容. if ([modelname isEqualToString:@"iPhone"]) ...

  7. iOS 开发中的多线程

    线程.进程 什么是线程.进程   有的人说进程就像是人的脑袋,线程就是脑袋上的头发~~.其实这么比方不算错,但是更简单的来说,用迅雷下载文件,迅雷这个程序就是一个进程,下载的文件就是一个线程,同时下载 ...

  8. iOS开发中常用的方法

    iOS开发中常用的方法 系统弹窗: 过期方法: UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"确认报价" ...

  9. iOS开发中的神兵利器 [实战系列]-李发展-专题视频课程

    iOS开发中的神兵利器 [实战系列]-11758人已学习 课程介绍         - 140节课程讲解GitHub中近百个过千star的iOS热门开源项目 - 市面上唯一大规模讲解热门的iOS开源项 ...

最新文章

  1. Ubuntu 12.04安装firefox 26中的flash plugin方法
  2. wxWidgets:wxPropertySheetDialog类用法
  3. 数据库为什么不适合搜索引擎的底层存储?
  4. 14岁考入北大少年班,如今节衣缩食上课穿胶鞋,却慷慨资助贫困生
  5. 60-179-024-使用-TypeInfo-Flink类型系统TypeIinformation
  6. 推荐系统整体架构及算法流程详解
  7. 数据库原理及应用(索引为什么快,数据在磁盘上如何存储)
  8. git向码云上提交项目
  9. python 调用父类classmethod_Python__子类调用父类的方法
  10. 微软出品 Remote Desktop for Mac(远程连接工具) 汉化版
  11. penuppendown在python中是啥意思_pen down是什么意思
  12. html window 网络邻居,windows10网上邻居共享文件0x80070035找不到网络路径
  13. 非常火的斗图表情包小程序源码
  14. Android - xml动画,识别手势动作,代码抽取,获取手机SIM卡串号,获取联系人数据,开机广播,发送/解析短信,报警音乐
  15. Ribbon负载均衡策略初步解读
  16. 阿piu传-文档批量上传客户端豆丁版使用帮助
  17. 自动驾驶中的轨迹预测数据集汇总!
  18. 1024*1024*1024
  19. SSM Activiti6.0 工作流引擎 java项目框架 spring5 审批流程
  20. 为什么你总是 CRUD,你想过没有?

热门文章

  1. PermissionError: [Errno 13] Permission denied 如何解决
  2. 国内三甲医院首度应用iPad
  3. Twing Hot Link For PSP 开发笔记(1)
  4. timemachine文件服务器地址,MAC设置TimeMachine备份文件大小技巧
  5. 记录一下 CMU 15445 项目
  6. 【已解决】ModuleNotFoundError: No module named ‘lanms‘
  7. 试飞遭遇无动力失速尾旋
  8. 用Python写一个文字版猫抓老鼠的游戏
  9. 计算机一级系统压缩密码,教你如何设置密码保护Win10系统压缩文件夹?
  10. 证监会发布新规,投资者个人信息保护要求再升级