ios-ContactsUI框架简单使用
来源:互联网 发布:什么软件可以做一寸照 编辑:程序博客网 时间:2024/06/08 01:15
在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 *> *)contactProperties{ NSLog(@"%@",contactProperties);}一般来说上面这五个代理方法中我们除了取消的那个代理方法,其他四个代理方法我们选择一个实现其实就可以了。
阅读全文
0 0
- ios-ContactsUI框架简单使用
- iOS 使用ContactsUI保存新联系人到系统通讯录
- iOS AFN框架简单使用
- iOS 之asi框架 一 简单使用
- iOS --- 地图框架MapKit的简单使用
- IOS FMDB框架 简单粗暴的使用
- IOS FMDB框架 简单粗暴的使用
- ios-RegexKitLite框架的简单使用
- ContactsUI(简介)
- iOS 第三方框架SDWebImage的简单使用
- 黑马程序员-IOS-OC基础-Foundation框架的简单使用
- iOS 第三方框架SDWebImage的简单使用
- IOS开源框架FMDB的简单使用
- [iOS 多线程 & 网络 - 4.0] - AFN框架简单使用
- iOS -App主流框架UINavigationController && UITabBarController的简单使用
- iOS 第三方框架SDWebImage的简单使用
- iOS 第三方框架-MBProgressHUD的简单使用
- iOS之按钮散开框架AWESOMEMENU的简单使用
- 支付宝支付集成
- CUDA并行编程学习心得2
- 通过上下文获取bean和通过bean工厂获取bean
- 约束满足问题与线性规划问题
- Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题
- ios-ContactsUI框架简单使用
- 《机器学习基石》课程笔记(2)
- LeetCode121. Best Time to Buy and Sell Stock
- 深度学习笔记:交叉熵(cross-entropy)损失函数解决二次型带来的学习速率下降问题
- 用gensim导入word2vec词向量bin文件,出现字符编码
- ArrayList、Vector、CopyOnWriteList
- Mesos+Kubernetes集成安装部署
- 【学习笔记】机器学习之用TensorFlow cnn 测试CIFAR-10数据集
- tomcat启动后本地无法访问,局域网内的其他电脑可以访问