iOS从通讯录中选择联系人
有时候APP需要用户输入一位联系人的姓名和电话,除了用户手动输入,一般也允许用户从通讯录中选择一位联系人(图1),下面的代码就是使用系统的<AddressBookUI/AddressBookUI.h>库实现这一需求。
图1
完整代码:
#import "ViewController.h"
#import <AddressBookUI/AddressBookUI.h>@interface ViewController ()<ABPeoplePickerNavigationControllerDelegate>
@property (weak, nonatomic) IBOutlet UITextField *nameTextField;
@property (weak, nonatomic) IBOutlet UITextField *phoneTextField;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];}//用户点击选择按钮
- (IBAction)clickSelect:(UIButton *)sender {ABPeoplePickerNavigationController *picker =[[ABPeoplePickerNavigationController alloc] init];picker.peoplePickerDelegate = self;[self presentViewController:picker animated:YES completion:nil];
}//这个方法在用户取消选择时调用
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{[self dismissViewControllerAnimated:YES completion:^{}];
}//这个方法在用户选择一个联系人后调用
-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person{[self displayPerson:person];[self dismissViewControllerAnimated:YES completion:^{}];
}//获得选中person的信息
- (void)displayPerson:(ABRecordRef)person
{NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);NSString *middleName = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty);NSString *lastname = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);NSMutableString *nameStr = [NSMutableString string];if (lastname!=nil) {[nameStr appendString:lastname];}if (middleName!=nil) {[nameStr appendString:middleName];}if (firstName!=nil) {[nameStr appendString:firstName];}NSString* phone = nil;ABMultiValueRef phoneNumbers = ABRecordCopyValue(person,kABPersonPhoneProperty);if (ABMultiValueGetCount(phoneNumbers) > 0) {phone = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);} else {phone = @"[None]";}//可以把-、+86、空格这些过滤掉NSString *phoneStr = [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];phoneStr = [phoneStr stringByReplacingOccurrencesOfString:@"+86" withString:@""];phoneStr = [phoneStr stringByReplacingOccurrencesOfString:@" " withString:@""];[self.nameTextField setText:nameStr];[self.phoneTextField setText:phoneStr];
}@end
源代码下载:点击打开链接
iOS从通讯录中选择联系人相关推荐
- 从通讯录中导入联系人并去重
首先给出实现完的界面图 上面是给出来的实现结果图. 从本地联系人中导出联系人,需要使用ContentProvider来获取通讯录中的联系人. 从通讯录中获取联系人方法如下: /** 得到手机通讯录联系 ...
- 利用aotu.js实现微信自动添加通讯录中的联系人
微信自动添加通讯录中的联系人 可加V交流:18236478843 /***Author: Niu*/auto.waitFor();//点击添加到通讯录 function click_Add(){if( ...
- js php通讯录,基于aotu.js实现微信自动添加通讯录中的联系人功能
什么是Auto.JS? Auto.JS是Android平台上的JavaScript自动化工具. 它的本质是可执行自己编写的简易Javascript脚本的,尤其可以在开启"无障碍模式" ...
- ios 获得通讯录中联系人的所有属性 亲测,可行 兼容io6 和 ios 7
2019独角兽企业重金招聘Python工程师标准>>> //获取通讯录中的所有属性,并存储在 textView 中,已检验,切实可行.兼容io6 和 ios 7 ,而且ios7还没有 ...
- IOS 获取系统通讯录中的联系人信息
- (IBAction)getAllContactFromSystem { ABAddressBookRef ab = ABAddressBookCreateWithOptions(NULL, NUL ...
- ios获得通讯录中联系人的所有属性
ABAddressBookRef addressBook = ABAddressBookCreate();CFArrayRef results = ABAddressBookCopyArrayOfAl ...
- html css ios系统字体,让iOS在CSS中选择系统字体Helvetica Neue或San Francisco
on iOS and OS X by using the "-apple-system" CSS value for the "font-family" CSS ...
- iOS.访问通讯录.02.写入联系人
一.创建联系人 1.创建联系人记录 ABRecord person = ABPersonCreate(); 2.保存或修改单值属性 bool ABRecordSetValue(ABRecordRef ...
- 安卓调用手机通讯录选择联系人
项目需求是从手机通讯录中选择联系人姓名.手机号返回,尝试很多方法未果,终于成功,特此备份. 调起通讯录的方法: Intent jumpIntent = new Intent(Intent.ACTION ...
最新文章
- Pinterest 谈实战经验:如何在两年内实现零到数百亿的月访问
- 把指定用户的命令写在/home/etc/rc.local中,系统开机时就会自动执行指定用户的命令。
- HDOJ 1285 确定比赛名次(拓扑排序)
- 摩托罗拉MT788刷机
- Unix网络编程---第一次作业
- 天津西站,座才几个?
- 【交易架构day9】阿里交易系统演进之路
- 蜂巢科技获A轮千万美元融资,启明创投领投
- 附近的人实现原理详细剖析!
- 记阿里巴巴的一次面试,教你怎样应对到来的“金三银四
- PostgreSQL集群篇——PostgreSQL的配置文件解析
- 怎么看外文文献的影响因子_[转载]如何查找高质量外文文献 - SCI/SSCI/AHCInbs...
- MotoSimEG-VRC软件:多机器人信号交互与PLC功能
- Redis看这一篇就够了
- 听肖邦Chopin: Waltz No.19 in A minor, Op.Posth的美好
- FPGA基本引脚知识
- Qt中的Resource
- 黑马程序员-java-小天教你使用eclipse
- 大创:小车运动部分计划及端口(1)
- 国际企业邮箱哪个好用?企业邮箱域名怎么修改?