ios-ContactsUI框架简单使用

在ios9的时候AddressBook.framework和AddressBookUI.framework全部过时,苹果新推Contacts.framework和ContactsUI.framework,这两个框架用起来就比较简单了。

下面先简单的介绍下用法。我们先去创建一个通讯录界面也就是系统自带的UI界面

    //创建通讯录界面
    CNContactPickerViewController * picker = [CNContactPickerViewController new];
    //设置代理,代理对象需要去遵守CNContactPickerDelegate这个协议
    picker.delegate = self;
    //弹出模态视图
    [self presentViewController:picker animated:YES completion:nil];
有5个代理方法是我们需要了解的如下所示

#pragma mark 点击取消的时候会调用下面的方法

-(void)contactPickerDidCancel:(CNContactPickerViewController *)picker
{
    NSLog(@"cancel");
}
#pragma mark 会进入多选模式,当我们选中了多个联系人没有选中的时候再去点击完成会调用

-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact *> *)contacts
{
    NSLog(@"%@",contacts);
}
进入多选联系人的界面如下所示


#pragma mark 选中某个联系人的时候会去调用,点击某个联系人之后会退出

这里我们需要通过联系人中取phoneNumbers也就是电话号码,我们之所以下面会用CNLabeldValue和CNPhoneNumber是因为帮助显示如下图所示,


-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact
{
    //1、获取姓名
    NSLog(@"givenName: %@ familyName: %@",contact.givenName,contact.familyName);
     
    
   for (CNLabeledValue *labelValue in contact.phoneNumbers)
   {    
       //获取的是什么电话比如说有家庭电话,工作电话之类的
       NSString * str = labelValue.label;

       NSLog(@"%@",str);
       //获取电话号码
       CNPhoneNumber * number = labelValue.value;

       NSLog(@"phoneNumber:  %@",number.stringValue);
   }

}
#pragma mark 点击某个属性的时候会去调用下面的代理方法

-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty
{
    NSLog(@"%@",contactProperty);
}
#pragma mark 进入多选模式,点击done会调用下面的代理方法

需要注意的是,如果我们这里不去设置通讯录控制器的这个predicateForSelectionOfProperty属性,我们仅仅实现下面这个方法的话,在多选模式下不管选没选中联系人,点击Done完成按钮的时候下面的contactProperties都是为null。如何去设置了predicateForSelectionOfProperty,比如说设置了,那么只有满足下面这个正则表达式条件的联系人可以被选中,其他联系人无法选中,选中之后点击完成,也是直接就dismiss了。

predicateForSelectionOfProperty = [NSPredicate predicateWithFormat:@"(key == 'emailAddresses') AND (value LIKE '*@mac.com')"];

-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperties:(NSArray<CNContactProperty *> *)contactP
roperties
{
    NSLog(@"%@",contactProperties);
}
一般来说上面这五个代理方法中我们除了取消的那个代理方法,其他四个代理方法我们选择一个实现其实就可以了。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值