iPhone程序调用系统通讯录选择单个电话号码
2010-12-20 20:17
302 查看
为了调用系统的通讯录界面与相应功能,需要引入AddressBook.framework与AddressBookUI.framework,同时,在源文件中需要包含同文件<AddressBook/AddressBook.h>,<AddressBookUI/AddressBookUI.h>.
首先申明变量:
ABPeoplePickerNavigationController *picker;
在需要的地方调用显示选择联系人界面,同时设置ABPeoplePickerNavigationControllerDelegate委托:
if(!picker){
picker = [[ABPeoplePickerNavigationController alloc] init];
// place the delegate of the picker to the controll
picker.peoplePickerDelegate = self;
}
// showing the picker
[self presentModalViewController:picker animated:YES];
选择联系人界面如下图所示:
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
return YES;
}
该方法在用户选择通讯录一级列表的某一项时被调用,通过person可以获得选中联系人的所有信息,但当选中的联系人有多个号码,而我们又希望用户可以明确的指定一个号码时(如拨打电话),返回YES允许通讯录进入联系人详情界面:
当用户点击某个字段时,会调用如下方法:
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
if (property == kABPersonPhoneProperty) {
ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, property);
int index = ABMultiValueGetIndexForIdentifier(phoneMulti,identifier);
NSString *phone = (NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, index);
//do something
[phone release];
[peoplePicker dismissModalViewControllerAnimated:YES];
}
return NO;
}
联系人信息中可能有很多字段,首先需要判断选择的是否为电话号码字段.当满足要求时,获取联系人信息,通过标识符获得用户选择的号码在该联系人号码列表中的索引,最后通过索引获得选中的电话号码.
最后还需要实现如下方法使得用户在点击"取消"按钮时关闭联系人选择界面:
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
// assigning control back to the main controller
[picker dismissModalViewControllerAnimated:YES];
}
首先申明变量:
ABPeoplePickerNavigationController *picker;
在需要的地方调用显示选择联系人界面,同时设置ABPeoplePickerNavigationControllerDelegate委托:
if(!picker){
picker = [[ABPeoplePickerNavigationController alloc] init];
// place the delegate of the picker to the controll
picker.peoplePickerDelegate = self;
}
// showing the picker
[self presentModalViewController:picker animated:YES];
选择联系人界面如下图所示:
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
return YES;
}
该方法在用户选择通讯录一级列表的某一项时被调用,通过person可以获得选中联系人的所有信息,但当选中的联系人有多个号码,而我们又希望用户可以明确的指定一个号码时(如拨打电话),返回YES允许通讯录进入联系人详情界面:
当用户点击某个字段时,会调用如下方法:
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
if (property == kABPersonPhoneProperty) {
ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, property);
int index = ABMultiValueGetIndexForIdentifier(phoneMulti,identifier);
NSString *phone = (NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, index);
//do something
[phone release];
[peoplePicker dismissModalViewControllerAnimated:YES];
}
return NO;
}
联系人信息中可能有很多字段,首先需要判断选择的是否为电话号码字段.当满足要求时,获取联系人信息,通过标识符获得用户选择的号码在该联系人号码列表中的索引,最后通过索引获得选中的电话号码.
最后还需要实现如下方法使得用户在点击"取消"按钮时关闭联系人选择界面:
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
// assigning control back to the main controller
[picker dismissModalViewControllerAnimated:YES];
}
相关文章推荐
- iPhone程序调用系统通讯录选择单个电话号码
- android调用系统通讯录程序,获取联系人信息
- iphone 调用系统通讯录添加联系人
- iphone 程序 调用系统程序
- iOS调用系统通讯录获取姓名电话号码(转)
- android调用系统自带的文件管理程序选择文件
- iOS调用系统通讯录获取姓名电话号码
- WIN32,,打开文件没有默认程序,调用系统的默认程序选择窗口
- 在iPhone中直接调用系统自带的地图程序实现导航
- 选择哪个mac系统来开发iphone程序
- 直接拨号、将电话号码传入拨号程序、调用拨号程序、调用系统浏览器浏览网页、调用系统程序查看联系人、显示系统设置界面和显示Wi-Fi设置界面代码
- iOS开发调用系统通讯录获取电话号码
- iOS 调用系统通讯录获取姓名电话号码
- Oracle EBS预警系统管理-调用并发请求程序(2)
- Unity调用系统窗口选择文件或文件路径
- Linux C程序调用系统命令
- 比较成功的一个,Android调用系统选择联系人,适合更多种手机
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- Android调用相机拍照并返回路径和调用系统图库选择图片
- 调用系统组件:拨号程序