通讯录AddressBook
苹果自带的通讯录
//导入通讯录的库头文件
//AddressBook提供了通讯录的所有数据
#import <AddressBook/AddressBook.h>
//AddressBookUI提供了通讯录的界面,基于AddressBook
#import <AddressBookUI/AddressBookUI.h>
- (IBAction)showAddressBookClick:(UIButton *)sender
{//ABPeoplePickerNavigationController : UINavigationController//ABPeoplePickerNavigationController 联系人选择器; 创建时不需要指定根视图控制器ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc]init];//在通讯录弹出present之前设置代理; peoplePickerDelegate 联系人选择器代理,设置代理就可以得到反馈picker.peoplePickerDelegate = self;[self presentViewController:picker animated:YES completion:nil];[picker release];
}//iOS8(Xcode6)之后废弃不用//用户点击cancel按钮时调用
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{NSLog(@"点击了取消按钮");[self dismissViewControllerAnimated:peoplePicker completion:nil];
}//用户点击某个联系人时是否进入下一页
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{NSLog(@"选择了联系人");return YES;
}//用户选择了某个联系人的某个资料时调用
//参数person 表示选择的联系人,这个参数中包含了这个联系人的所有资料
//参数property 表示用户选择的资料类型(电话、生日、地址等)
//参数identifier 表示用户选择的资料的索引值(例如:选择了第几个电话)
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{NSLog(@"选择了电话或者其他资料");//ABRecordCopyCompositeName 获得联系人的姓名//CFStringRef 一个结构体,是NSString的属性部分,在非ARC下可以通过强制转换;ARC下用(__bridge)进行桥接转换NSString *name = (NSString *)ABRecordCopyCompositeName(person);_nameLabel.text = name;CFRelease(name);//获取电话//如果用户选择了电话,再往下执行if (property == kABPersonPhoneProperty){//ABRecordCopyValue 获得用户所选择的资料集合(电话、生日等)ABMultiValueRef ref = ABRecordCopyValue(person, property);//ABMultiValueGetIndexForIdentifier 获得用户所选择的资料的索引unsigned long index = ABMultiValueGetIndexForIdentifier(ref, identifier);//ABMultiValueCopyValueAtIndex 根据索引,从资料集合中获得用户所选择的资料NSString *phone = ABMultiValueCopyValueAtIndex(ref, index);//处理一下电话号码,让其为纯数字_phoneLabel.text = [self handlePhoneString:phone];CFRelease(phone);CFRelease(ref);}return YES;
}//判断电话号码是否为纯数字
- (NSString *)handlePhoneString:(NSString *)phonestring
{NSMutableString *mString = [NSMutableString stringWithString:phonestring];//containsString 判断一个字符串是否包含另一个字符串//[@"1234567890" containsString:string];//NSCharacterSet 字符集//characterSetWithCharactersInString 生成一个数字字符集NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];//遍历数组、字符串中元素,倒着遍历,正着遍历当连着几个非法字符时,会隔过去一些//或者在得到一个非法字符删除后将其i值-1//i--;for (NSInteger i = mString.length - 1; i>=0; i--){//substringWithRange截取字符串中的某一部分//NSMakeRange(i, 1) 从第i个位置,取1个NSString *string = [mString substringWithRange:NSMakeRange(i, 1)];// NSRange NSMakeRange (// NSUInteger loc,// NSUInteger len// );// loc 为location缩写,len 表示长度。作用:在loc指定得位置开始往后获取len长度个得元素。//输入字符的字符集NSCharacterSet *chSet = [NSCharacterSet characterSetWithCharactersInString:string];//isSupersetOfSet 判断输入字符的集合是否是数字字符集的子集if ([set isSupersetOfSet:chSet]){//是数字}else{//不是数字 , 将其删除[mString deleteCharactersInRange:NSMakeRange(i, 1)];//或者在得到一个非法字符删除后将其i值-1//i--;}}return mString;
}
效果如下:
通讯录AddressBook相关推荐
- 手机通讯录AddressBook的使用
通过使用两个框架:AddressBook.framework和AddressBookUI.framework,我们可以在程序中访问并显示iPhone数据库中的联系人信息. 1.AddressBookU ...
- 基于C++实现(控制台+界面)通讯录管理系统【100010012】
个人通讯录管理系统 问题描述: 主要内容: 个人通讯录是记录了同学(包含一起上学的学校名称).同事(包含共事的单位名称).朋友(包含认识的地点).亲戚(包含称呼)等与本人有关人员的数据集. 具体要求: ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总...
iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...
- 短信、邮件、通讯录、蓝牙、社交、Game Center、应用内购买、iClould、Passbook
来源于:http://www.cocoachina.com/ios/20150129/11068.html iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会 ...
- 基于C++和QT实现的个人通讯录管理系统
资源下载地址:https://download.csdn.net/download/sheziqiong/85722043 资源下载地址:https://download.csdn.net/downl ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook详解
代码改变世界 Posts - 69, Articles - 0, Comments - 812 Cnblogs Dashboard Login Home Contact Gallery RSS Ken ...
- iOS开发系列--通讯录、蓝牙、
iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...
- 微信小程序查看通讯录 联系人
通讯录 addressBook() {//通讯录操作 wx.chooseContact({ success: function (res) { // console.log(res, '成功回调') ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总,icloudpassbook...
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- iOS通讯录,蓝牙,内购等开发系列
–系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系 ...
最新文章
- TCGAbiolinks包下载TCGA数据
- 研究.jpg图片马赛克问题
- 两次备考信息系统项目管理师长篇心路历程附考试技巧
- python os.walk
- [SharePoint][SharePoint2013循序渐进]SPS2013简介
- 第八十七期:爬了知乎“沙雕问题”,笑死个人!
- hdu max sum
- php自定义目录,ThinkPHP中自定义目录结构的设置方法_php技巧
- 【java】统计英文文本中某些字母出现的次数
- python项目实战:实现数据可视化三维拟合
- Java分布式面试题及答案,附架构师必备技术详解
- ActiveSync同步使用方法
- 贝叶斯因果网络_因果关系和贝叶斯网络
- 三维重建(知识点详细解读、主要流程)
- css3中自适应边框图片运用
- con 元器件符号_PROTEUS中元器件符号
- 解决Failing package is:mysql-community-icu-data-files-8.0.29-1.el7.x86_64 GPG Keys are configured as..
- 读书笔记-别做正常的傻瓜
- 使用python读取和分析fasta文件
- 2023年国家留学基金委(CSC)有关国别申请、派出注意事项
热门文章
- winform 显示分隔控件_Winform分页控件之纯分页显示处理
- php jwt payload,php实现JWT(json web token)鉴权实例详解
- Android 如何获取运行内存和总运行内存等
- 利用135端口的思路
- 拳皇觉醒服务器维护,拳皇全明星拳魂觉醒手游9月26日更新公告_拳皇全明星拳魂觉醒9月26日更新了什么_玩游戏网...
- NYOJ-366:D的小L
- lisp实心圆点怎么画_cad中怎么样画实心圆点
- 多多客api_订多多提供API
- python编写自定义函数计算约登值(约登指数、Youden Index)、寻找最佳阈值(threshold、cutoff)、以及最佳阈值对应的ROC曲线中的坐标点
- uniapp 跳转到外部链接