ios 使用 通讯录 picker 快速 拾取 用户 手机号码 代码分享
2014-09-11 12:34
471 查看
ViewController.h
#import <AddressBookUI/AddressBookUI.h>
#import <AddressBook/AddressBook.h>
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <ABPeoplePickerNavigationControllerDelegate>
@end
ViewController.m
@implementation ViewController
//弹出 通讯录 拭去 UI 的方法
-(void)showAddressBookBtnClicked:(UIButton*)sender{
sender.enabled = NO;
__block UIButton * bBtn = sender;
ABPeoplePickerNavigationController * peoplePickerNav = [[ABPeoplePickerNavigationControlleralloc]
init];
NSArray *displayedItems =@[[NSNumbernumberWithInt:kABPersonPhoneProperty]];
// 只显示 电话号码
peoplePickerNav.displayedProperties = displayedItems;
peoplePickerNav.peoplePickerDelegate =
self;
[self.navigationControllerpresentViewController:peoplePickerNav
animated:YEScompletion:^{
bBtn.enabled = YES;
}];
}
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{
[peoplePicker dismissViewControllerAnimated:YEScompletion:nil];
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{
return YES;
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier{
ABPropertyType propertyType =ABPersonGetTypeOfProperty(property);
if (propertyType ==kABMultiStringPropertyType) {
CFTypeRef phoneProperty =
ABRecordCopyValue(person, property);
int index = ABMultiValueGetIndexForIdentifier(phoneProperty, identifier);
CFTypeRef value =
ABMultiValueCopyValueAtIndex(phoneProperty,index);
NSString * valueString = (__bridge_transferNSString*)value;
NSString * pureNumbers = [[valueStringcomponentsSeparatedByCharactersInSet:[[NSCharacterSetcharacterSetWithCharactersInString:@"0123456789"]invertedSet]]
componentsJoinedByString:@""]; // 将 字符串中可能的 非 号码 字符 剔除
NSLog(@"phoneNumber %@ ",pureNumbers); //最终所得到的 电话号码
}
[peoplePicker dismissViewControllerAnimated:YEScompletion:nil];
return NO;
}
@end
#import <AddressBookUI/AddressBookUI.h>
#import <AddressBook/AddressBook.h>
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <ABPeoplePickerNavigationControllerDelegate>
@end
ViewController.m
@implementation ViewController
//弹出 通讯录 拭去 UI 的方法
-(void)showAddressBookBtnClicked:(UIButton*)sender{
sender.enabled = NO;
__block UIButton * bBtn = sender;
ABPeoplePickerNavigationController * peoplePickerNav = [[ABPeoplePickerNavigationControlleralloc]
init];
NSArray *displayedItems =@[[NSNumbernumberWithInt:kABPersonPhoneProperty]];
// 只显示 电话号码
peoplePickerNav.displayedProperties = displayedItems;
peoplePickerNav.peoplePickerDelegate =
self;
[self.navigationControllerpresentViewController:peoplePickerNav
animated:YEScompletion:^{
bBtn.enabled = YES;
}];
}
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{
[peoplePicker dismissViewControllerAnimated:YEScompletion:nil];
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{
return YES;
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier{
ABPropertyType propertyType =ABPersonGetTypeOfProperty(property);
if (propertyType ==kABMultiStringPropertyType) {
CFTypeRef phoneProperty =
ABRecordCopyValue(person, property);
int index = ABMultiValueGetIndexForIdentifier(phoneProperty, identifier);
CFTypeRef value =
ABMultiValueCopyValueAtIndex(phoneProperty,index);
NSString * valueString = (__bridge_transferNSString*)value;
NSString * pureNumbers = [[valueStringcomponentsSeparatedByCharactersInSet:[[NSCharacterSetcharacterSetWithCharactersInString:@"0123456789"]invertedSet]]
componentsJoinedByString:@""]; // 将 字符串中可能的 非 号码 字符 剔除
NSLog(@"phoneNumber %@ ",pureNumbers); //最终所得到的 电话号码
}
[peoplePicker dismissViewControllerAnimated:YEScompletion:nil];
return NO;
}
@end
相关文章推荐
- matches 正则表达式的使用 编写代码,验证手机号码,并告知用户是"189""158""130" 号段各自的运营公司, 如果号码长度有误,告诉用户手机号码 不存在。
- IOS_Xcode代码快速输入功能使用方法
- 免费手机号码归属地API查询接口和PHP使用实例分享
- iOS开发,使用友盟快速分享与第三方的白名单
- iOS 使用AFN for 循环上传多张图片至服务器,用户手机项目上面的图片顺序查看
- iOS手机通讯录的简单使用
- 分享一段ios中使用数据库的代码(创建,升级,增删改查)
- iOS - ABPeoplePickerNavigationController 获取手机通讯录信息
- ios使用友盟分享到QQ/微信时时如何判断手机上是否安装了QQ以及微信的客户端
- iOS使用Quartzcode设计动画,快速得到Object-C 和 Swift 代码。
- Android跳转到通讯录获取用户名称和手机号码的实现思路
- wap获取用户手机号码(PHP代码)
- iOS项目部分-01(注册)-使用正则表达式判断用户输入的是不是手机号码
- IOS正则判断手机号码,电话号码函数, NSPredicate使用
- Android跳转到通讯录获取用户名称和手机号码
- iOS 9中需要使用 QQ/QQ空间/支付宝/微信SDK 的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码
- Android跳转到通讯录获取用户名称和手机号码
- IOS开发- 访问通讯录,并将通讯录中姓名-头像-手机号码 发给服务器
- ios 使用正则表达式的邮箱,手机号码,身份证号验证的快捷方式