天天看點

iOS之擷取手機通訊錄

#import "ViewController.h"

#import <ContactsUI/ContactsUI.h>//導入的頭檔案,iOS9之前是<AddressBookUI/AddressBookUI.h>

//#import <AddressBookUI/AddressBookUI.h>

@interface ViewController ()<CNContactPickerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}

#pragma mark 點選螢幕來顯示聯系人界面

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    //1. 建立聯系人選擇控制器

    CNContactPickerViewController *picker = [CNContactPickerViewControllernew];

    //2. 設定代理 -->擷取資料

    picker.delegate =self;

    //3. 模态彈出聯系人選擇控制器

    [selfpresentViewController:pickeranimated:YEScompletion:nil];

}

//#pragma mark 選中單個聯系人的時候會調用

//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact

//{

//    //擷取聯系人的電話和姓名

//    //1. 擷取姓名

//    // 名

//    NSLog(@"%@", contact.givenName);

//    // 姓

//    NSLog(@"%@", contact.familyName);

//    

//    //2. 擷取電話

//    for (CNLabeledValue *labeledValue in contact.phoneNumbers) {

//        NSLog(@"label: %@", labeledValue.label);

//        

//        //ValueType == CNPhoneNumber

//        CNPhoneNumber *phoneNumber = labeledValue.value;

//        

//        NSLog(@"value: %@", phoneNumber.stringValue);

//    }

//    

//}

//隻有單獨實作下面這個方法時,才會跳到通訊錄個人詳細頁面

#pragma mark 選中單個聯系人的屬性的時候會調用

- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty

{

self.phonenum.text=contactProperty.value[@"digits"];//手機号碼

    NSLog(@"單個聯系人屬性選擇");

//輸出結果 :單個聯系人屬性選擇--<CNContactProperty: 0x170423fc0: contact identifier=4AA82249-D061-4FCD-BBE3-EF130F394639, contact name=m 俺, key=phoneNumbers, identifier=747CC6B9-9E77-48B2-8E6C-322A0B1619DE, value=<CNPhoneNumber: 0x174421680: countryCode=cn, digits=15805508133>>

}

//#pragma mark 選中多個聯系人的時候回調用

//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact *> *)contacts

//{

//    //CNContact 是聯系人的類

//    for (CNContact *contact in contacts) {

//        //1. 擷取姓名

//        // 名

//        NSLog(@"01-%@", contact.givenName);

//        // 姓

//        NSLog(@"02-%@", contact.familyName);

//        

//        //2. 擷取電話

//        for (CNLabeledValue *labeledValue in contact.phoneNumbers) {

//            NSLog(@"03-label表示電話的類型(是手機還是辦公電話): %@", labeledValue.label);

//            

//            //ValueType == CNPhoneNumber

//            CNPhoneNumber *phoneNumber = labeledValue.value;

//            

//            NSLog(@"04-value: %@", phoneNumber.stringValue);

//        }

//    }

//}

//

//

//#pragma mark 選中聯系人的多個屬性的時候會調用

//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperties:(NSArray<CNContactProperty *> *)contactProperties

//{

//    NSLog(@"-聯系人屬性--%@",contactProperties);

//}

#pragma mark 取消聯系人界面的時候會調用的方法

- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker

{

    NSLog(@"%s取消",__func__);

}

@end

===================