首页 > 移动平台 > 详细

ios打开通讯录及点击通讯录时提取相关信息

时间:2015-11-16 15:20:59      阅读:285      评论:0      收藏:0      [点我收藏+]

 首先引入头文件

#import <AddressBookUI/ABPeoplePickerNavigationController.h>

#import <AddressBook/ABPerson.h>

#import <AddressBookUI/ABPersonViewController.h>

在需要打开电话本的方法中实现:

    

- (IBAction)openPhoneBook:(UIButton *)sender {

    NSLog(@"打开电话本");

    ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init];

    peoplePicker.peoplePickerDelegate = self;

    peoplePicker.delegate = self;

    [self presentViewController:peoplePicker animated:YES completion:nil];

}

代理方法实现回调

#pragma mark - ABPeoplePickerNavigationControllerDelegate

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker

{

    [peoplePicker dismissViewControllerAnimated:YES completion:^{}];

}

 

 

// Called after a person has been selected by the user.

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person NS_AVAILABLE_IOS(8_0)

{

    ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);

    NSString * phone  = @"";

    if (phoneNumbers) {

        //CFIndex count = ABMultiValueGetCount(phoneNumbers);

        phone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);

        CFRelease(phoneNumbers);

    }

    

    NSString * firstname = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonLastNameProperty)); //

    NSString * lastname = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonFirstNameProperty)); //

    NSString * name = [firstname==nil?@"":firstname stringByAppendingString:lastname==nil?@"":lastname];

    

    if(phone.length && [phone hasPrefix:@"+86"]){

        phone = [phone substringFromIndex:3];

    }

    

    phone =  [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];

    self.searchTField.text = phone;

    

    

    [peoplePicker dismissViewControllerAnimated:NO completion:^{}];

}

 

// Deprecated, use predicateForSelectionOfPerson and/or -peoplePickerNavigationController:didSelectPerson: instead.

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person NS_DEPRECATED_IOS(2_0, 8_0)

{

    ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);

    NSString * phone  = @"";

    if (phoneNumbers) {

        //CFIndex count = ABMultiValueGetCount(phoneNumbers);

        phone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);

        CFRelease(phoneNumbers);

    }

    NSString * firstname = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonLastNameProperty)); //

    NSString * lastname  = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonFirstNameProperty)); //

    NSString * name = [firstname==nil?@"":firstname stringByAppendingString:lastname==nil?@"":lastname];

    

    NSLog(@"phone=%@",phone);

    

    if(phone.length && [phone hasPrefix:@"+86"]){

        phone = [phone substringFromIndex:3];

    }

    

    phone =  [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];

    

    self.searchTField.text = phone;

        

    

    [peoplePicker dismissViewControllerAnimated:YES completion:^{}];

    return NO;

}

ios打开通讯录及点击通讯录时提取相关信息

原文:http://www.cnblogs.com/h-tao/p/4968741.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!