iOS从通讯录中选择联系人
2016-01-24 16:36
411 查看
有时候APP需要用户输入一位联系人的姓名和电话,除了用户手动输入,一般也允许用户从通讯录中选择一位联系人(图1),下面的代码就是使用系统的<AddressBookUI/AddressBookUI.h>库实现这一需求。
图1
完整代码:
源代码下载:点击打开链接
图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
源代码下载:点击打开链接
相关文章推荐
- [已验证]双卡手机下两种来电监听方法的一些问题。
- jquery mobile实现拨打电话功能的几种方法
- JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
- Android电话拨号器实现方法
- Android获取手机通讯录、sim卡联系人及调用拨号界面方法
- Android实现仿通讯录侧边栏滑动SiderBar效果代码
- android编程实现电话录音的方法
- Python 实现简单的电话本功能
- Android根据电话号码获得联系人头像实例代码
- Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
- Android通讯录开发之删除功能的实现方法
- iOS开发中使app获取本机通讯录的实现代码实例
- 一些Manager类整理
- Android Intent Action 大全
- android 打电话
- 四招关闭自动播放
- 大家快来看啊,想知道上海火车票订票电话是多少吗?
- extmail全局地址本生成脚本
- AH名片簿客户通讯录管理软件V3.78
- Android之Intent和常用Action