iOS 开发中实现打电话功能实用代码
一、写一个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 开发中实现打电话功能实用代码相关推荐
- iOS开发中经常用的实用代码合集
iOS开发中经常用的实用代码合集 本文整理了,在iOS开发中我们所遇到一些开发问题的技巧类的代码,让你在开发过程中避免了很多弯路,希望能给你的开发带来帮助和启发. 1.判断邮箱格式是否正确的代码: / ...
- iOS开发中一些有用的小代码
1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @&quo ...
- iOS开发中打电话发短信等功能的实现
在APP开发中,可能会涉及到打电话.发短信.发邮件等功能.比如说,通常一个产品的"关于"页面,会有开发者的联系方式,理想情况下,当用户点击该电话号码时,能够自动的帮用户拨出去,就涉 ...
- ios开发中计算代码运算时间_iOS日历、日期、时间的计算
时间和日历的计算在iOS开发中经常看到,经常看到大家在百度,开源中国等搜索这些答案.今天写个简单的时间和日历有关的计算. 获取一个月的总天数 1.获取当月的天数 - (NSInteger)getNum ...
- IOS开发中巧用Photoshop的通道功能
有时候在IOS开发中需要一些简单的.小的png图片时,便可以自己动手用Photoshop来做了(有时候UI设计师大大也不是那么情愿来给你做这些小东西啊!) 设置一张图片的颜色:可使用魔棒工具选中要改变 ...
- ios开发中各种版本、设备的区分的代码
把开发过程中比较好的内容段做个收藏,如下的内容是关于 ios开发中各种版本.设备的区分的内容. if ([modelname isEqualToString:@"iPhone"]) ...
- iOS 开发中的多线程
线程.进程 什么是线程.进程 有的人说进程就像是人的脑袋,线程就是脑袋上的头发~~.其实这么比方不算错,但是更简单的来说,用迅雷下载文件,迅雷这个程序就是一个进程,下载的文件就是一个线程,同时下载 ...
- iOS开发中常用的方法
iOS开发中常用的方法 系统弹窗: 过期方法: UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"确认报价" ...
- iOS开发中的神兵利器 [实战系列]-李发展-专题视频课程
iOS开发中的神兵利器 [实战系列]-11758人已学习 课程介绍 - 140节课程讲解GitHub中近百个过千star的iOS热门开源项目 - 市面上唯一大规模讲解热门的iOS开源项 ...
最新文章
- Ubuntu 12.04安装firefox 26中的flash plugin方法
- wxWidgets:wxPropertySheetDialog类用法
- 数据库为什么不适合搜索引擎的底层存储?
- 14岁考入北大少年班,如今节衣缩食上课穿胶鞋,却慷慨资助贫困生
- 60-179-024-使用-TypeInfo-Flink类型系统TypeIinformation
- 推荐系统整体架构及算法流程详解
- 数据库原理及应用(索引为什么快,数据在磁盘上如何存储)
- git向码云上提交项目
- python 调用父类classmethod_Python__子类调用父类的方法
- 微软出品 Remote Desktop for Mac(远程连接工具) 汉化版
- penuppendown在python中是啥意思_pen down是什么意思
- html window 网络邻居,windows10网上邻居共享文件0x80070035找不到网络路径
- 非常火的斗图表情包小程序源码
- Android - xml动画,识别手势动作,代码抽取,获取手机SIM卡串号,获取联系人数据,开机广播,发送/解析短信,报警音乐
- Ribbon负载均衡策略初步解读
- 阿piu传-文档批量上传客户端豆丁版使用帮助
- 自动驾驶中的轨迹预测数据集汇总!
- 1024*1024*1024
- SSM Activiti6.0 工作流引擎 java项目框架 spring5 审批流程
- 为什么你总是 CRUD,你想过没有?
热门文章
- PermissionError: [Errno 13] Permission denied 如何解决
- 国内三甲医院首度应用iPad
- Twing Hot Link For PSP 开发笔记(1)
- timemachine文件服务器地址,MAC设置TimeMachine备份文件大小技巧
- 记录一下 CMU 15445 项目
- 【已解决】ModuleNotFoundError: No module named ‘lanms‘
- 试飞遭遇无动力失速尾旋
- 用Python写一个文字版猫抓老鼠的游戏
- 计算机一级系统压缩密码,教你如何设置密码保护Win10系统压缩文件夹?
- 证监会发布新规,投资者个人信息保护要求再升级