iOS实现从通讯录中选择联系人

有时候APP需要用户输入一位联系人的姓名和电话,除了用户手动输入,一般也允许用户从通讯录中选择一位联系人(图1),下面的代码就是使用系统的库实现这一需求。
iOS实现从通讯录中选择联系人
文章图片

【iOS实现从通讯录中选择联系人】图1
完整代码:

#import "ViewController.h"#import @interface ViewController ()@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

源代码下载:点击打开链接
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读