通讯录AddressBook
来源:互联网 发布:js数组最后一个 编辑:程序博客网 时间:2024/05/17 08:27
苹果自带的通讯录
//导入通讯录的库头文件//AddressBook提供了通讯录的所有数据#import <AddressBook/AddressBook.h>//AddressBookUI提供了通讯录的界面,基于AddressBook#import <AddressBookUI/AddressBookUI.h>
- (IBAction)showAddressBookClick:(UIButton *)sender{ //ABPeoplePickerNavigationController : UINavigationController //ABPeoplePickerNavigationController 联系人选择器; 创建时不需要指定根视图控制器 ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc]init]; //在通讯录弹出present之前设置代理; peoplePickerDelegate 联系人选择器代理,设置代理就可以得到反馈 picker.peoplePickerDelegate = self; [self presentViewController:picker animated:YES completion:nil]; [picker release];}//iOS8(Xcode6)之后废弃不用//用户点击cancel按钮时调用- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{ NSLog(@"点击了取消按钮"); [self dismissViewControllerAnimated:peoplePicker completion:nil];}//用户点击某个联系人时是否进入下一页- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{ NSLog(@"选择了联系人"); return YES;}//用户选择了某个联系人的某个资料时调用//参数person 表示选择的联系人,这个参数中包含了这个联系人的所有资料//参数property 表示用户选择的资料类型(电话、生日、地址等)//参数identifier 表示用户选择的资料的索引值(例如:选择了第几个电话)- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{ NSLog(@"选择了电话或者其他资料"); //ABRecordCopyCompositeName 获得联系人的姓名 //CFStringRef 一个结构体,是NSString的属性部分,在非ARC下可以通过强制转换;ARC下用(__bridge)进行桥接转换 NSString *name = (NSString *)ABRecordCopyCompositeName(person); _nameLabel.text = name; CFRelease(name); //获取电话 //如果用户选择了电话,再往下执行 if (property == kABPersonPhoneProperty) { //ABRecordCopyValue 获得用户所选择的资料集合(电话、生日等) ABMultiValueRef ref = ABRecordCopyValue(person, property); //ABMultiValueGetIndexForIdentifier 获得用户所选择的资料的索引 unsigned long index = ABMultiValueGetIndexForIdentifier(ref, identifier); //ABMultiValueCopyValueAtIndex 根据索引,从资料集合中获得用户所选择的资料 NSString *phone = ABMultiValueCopyValueAtIndex(ref, index); //处理一下电话号码,让其为纯数字 _phoneLabel.text = [self handlePhoneString:phone]; CFRelease(phone); CFRelease(ref); } return YES;}//判断电话号码是否为纯数字- (NSString *)handlePhoneString:(NSString *)phonestring{ NSMutableString *mString = [NSMutableString stringWithString:phonestring]; //containsString 判断一个字符串是否包含另一个字符串 //[@"1234567890" containsString:string]; //NSCharacterSet 字符集 //characterSetWithCharactersInString 生成一个数字字符集 NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"]; //遍历数组、字符串中元素,倒着遍历,正着遍历当连着几个非法字符时,会隔过去一些 //或者在得到一个非法字符删除后将其i值-1 //i--; for (NSInteger i = mString.length - 1; i>=0; i--) { //substringWithRange截取字符串中的某一部分 //NSMakeRange(i, 1) 从第i个位置,取1个 NSString *string = [mString substringWithRange:NSMakeRange(i, 1)]; // NSRange NSMakeRange ( // NSUInteger loc, // NSUInteger len // ); // loc 为location缩写,len 表示长度。作用:在loc指定得位置开始往后获取len长度个得元素。 //输入字符的字符集 NSCharacterSet *chSet = [NSCharacterSet characterSetWithCharactersInString:string]; //isSupersetOfSet 判断输入字符的集合是否是数字字符集的子集 if ([set isSupersetOfSet:chSet]) { //是数字 } else { //不是数字 , 将其删除 [mString deleteCharactersInRange:NSMakeRange(i, 1)]; //或者在得到一个非法字符删除后将其i值-1 //i--; } } return mString;}效果如下:
7 0
- 通讯录AddressBook
- 通讯录(AddressBook)1
- 通讯录(AddressBook)2
- 通讯录(AddressBook)3
- AddressBook获取通讯录
- 手机通讯录AddressBook的使用
- AddressBook 调用系统通讯录数据
- AddressBook通讯录右边索引条
- ios通讯录------AddressBook基本使用
- IOS疯狂基础之AddressBook通讯录
- OC试题 ——通讯录(AddressBook)
- 使用AddressBook来获取通讯录消息
- AddressBook、AddressBookUI、Contacts、ContactsUI 通讯录操作
- iOS开发------操作通讯录(AddressBook篇)&通讯录UI(AddressBookUI篇)
- 操作通讯录(AddressBook篇)&通讯录UI(AddressBookUI篇)
- AddressBook
- AddressBook
- AddressBook
- poj3311(floyd+旅行商)
- PHP删除文件夹
- leetcode No19. Remove Nth Node From End of List
- Spring Security(02)——关于登录
- Spring Security(03)——核心类简介
- 通讯录AddressBook
- 计算机网络核心基础知识总览
- 文章标题
- Wordpress有诸多问题?
- PAT - 甲级 - 1005. Spell It Right (20)
- Spring Security(04)——认证简介
- UVa1374(快速幂)
- REDIS从LINUX文件写入批量数据
- java多态