美文网首页
iOS 调用通讯录

iOS 调用通讯录

作者: 诠释残缺 | 来源:发表于2017-05-17 11:52 被阅读62次

    iOS9之前使用AddressBook,AddressBookUI框架
    iOS9之后使用Contacts,ContactsUI框架

    因为只用到了选择联系人电话号码的功能,所以选择了ContactsUI。

    导入头文件
    #import <ContactsUI/ContactsUI.h>
    
    #pragma mark --- 调用系统通讯录
    - (void)selectContact
    {
        // 1.创建选择联系人的控制器
        CNContactPickerViewController *contactVc = [[CNContactPickerViewController alloc] init];
        // 2.设置代理
        contactVc.delegate = self;
        // 3.弹出控制器
        [self presentViewController:contactVc animated:YES completion:nil];
    }
    
    #pragma mark --- CNContactPickerDelegate
    // 1.当选中某一个联系人时会执行该方法
    - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{
    
        // 1.获取联系人的姓名
        NSString *lastname = contact.familyName;
        NSString *firstname = contact.givenName;
        
        // 2.获取联系人的电话号码,不展开详情
        NSArray *phoneNums = contact.phoneNumbers;
    
        此处获取的是该联系人的第一个号码
        CNLabeledValue *labeledValue = phoneNums[0]
        CNPhoneNumber *phoneNumer = labeledValue.value;
        NSString * phoneValue = phoneNumer.stringValue;
        NSLog(@"%@", phoneValue);
      
        遍历所有的号码
        for (CNLabeledValue *labeledValue in phoneNums) {
    
            CNPhoneNumber *phoneNumer = labeledValue.value;
            NSString *phoneValue = phoneNumer.stringValue;
            NSLog(@"%@",phoneValue);
        }
    }
    
    // 2.当选中某一个联系人的某一个属性时会执行该方法(展开详情)
    - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty{
    
    }
    
    // 3.点击了取消按钮会执行该方法
    - (void)contactPickerDidCancel:(CNContactPickerViewController *)picker{
      
    }
    
    

    注意:代理方法1和代理方法2同时写,代理方法2不执行

    使用ContactsUI的时候 授权与不授权 都可以使用(我没有授权,也可以正常的调用)

    有时会出现联系人没有号码的时候,需要进行判断。

    相关文章

      网友评论

          本文标题:iOS 调用通讯录

          本文链接:https://www.haomeiwen.com/subject/stlmtxtx.html