iOS10 获取系统通讯录新方法

#import <ContactsUI/ContactsUI.h>

遵循代理

CNContactPickerDelegate

调用通讯录 
如果在iOS10的机器上调用以前的ABPeoplePickerNavigationController老方法将直接崩溃.

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    //iOS 10
//    AB_DEPRECATED("Use CNContactPickerViewController from ContactsUI.framework instead")
    CNContactPickerViewController * contactVc = [CNContactPickerViewController new];
    contactVc.delegate = self;
    [self presentViewController:contactVc animated:YES completion:^{
    }];
}

选择完成代理回调

-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{
    NSLog(@"name:%@%@",contact.familyName,contact.givenName);
    CNLabeledValue * labValue = [contact.phoneNumbers lastObject];
    NSLog(@"phone:%@",[labValue.value stringValue]);
}

取消选择回调

- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker{
    [picker dismissViewControllerAnimated:YES completion:nil];
}
原文地址:https://www.cnblogs.com/xiaoxiaoyublogs/p/5889435.html