之前两篇文章中说了AddressBookUI.framework 和 AddressBook.framework这两个框架,这两个框架都是iOS9之前的,iOS9之后出现了一个新的框架ContactsUI。同之前的相比这个框架使用起来非常简单,简单的不能再简单。但是注意,再使用前要导入这个框架:<ContactsUI/ContactsUI.h>; 遵守这个协议:<CNContactPickerDelegate> 。直接上代码:
//ContactsUI.framework中
CNContactPickerViewController *contactVC = [CNContactPickerViewController new];
contactVC.delegate = self;
[self presentViewController:contactVC animated:YES completion:^{
}];
相关代理方法,代理方法作用加代码注释。
#pragma mark - CNContactViewControllerDelegate代理
//选择一个联系人的时候调用
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{
//1.姓名
NSLog(@"%@-%@",contact.givenName,contact.familyName);
//2.获取电话 --->泛型,会在遍历数组帮很大忙。
for (CNLabeledValue *labelValue in contact.phoneNumbers) {
NSLog(@"电话标签: %@",labelValue.label);
CNPhoneNumber *phoneNumber = labelValue.value;
NSLog(@"电话号码: %@",phoneNumber.stringValue);
}
}
//实现此方法就可以选择多个联系人,如果不实现则是单选联系人
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact *> *)contacts{
for (CNContact *contact in contacts) {
//1.姓名
NSLog(@"%@-%@",contact.givenName,contact.familyName);
//2.获取电话 --->泛型,会在遍历数组帮很大忙。
for (CNLabeledValue *labelValue in contact.phoneNumbers) {
NSLog(@"电话标签: %@",labelValue.label);
CNPhoneNumber *phoneNumber = labelValue.value;
NSLog(@"电话号码: %@",phoneNumber.stringValue);
}
NSLog(@"\n\n");
}
}
//选择联系人属性
//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty{
//
//}
//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperties:(NSArray<CNContactProperty *> *)contactProperties{
//
//}
//取消选择联系人的时候调用
- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker{
}
接着三篇文章吧,也算是相对比较系统的整理了下通讯录开发相关的重要知识点。虽然截止目前实际开发中还没用到,但是还是很有必要学习的。学无止境吗!