- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event
{
// 1.获取联系人
// ABPeoplePickerNavigationController是iOS9之前的框架,所以在使用的时候,如果使用的是9.0+的版本,会报警告
ABPeoplePickerNavigationController *ppnc = [[ABPeoplePickerNavigationController alloc] init];
// 2.设置联系人代理
ppnc.peoplePickerDelegate = self;
// 3.弹出联系人界面
[self presentViewController:ppnc animated:YES completion:nil];
}
/**
* 该方法在点击联系人的时候调用 调用之后会自动退出控制器
*
* @param peoplePicker 弹出来的联系人控制器
* @param person 联系人
*/
//- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person
//{
// // 1.获取联系人的姓名
// CFStringRef firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
// CFStringRef lastName = ABRecordCopyValue(person, kABPersonLastNameProperty);
// // 注:这里存在内存泄露
// // (__bridge NSString *)这种桥接方式,只会将对象的所有权交给Foundation的引用使用
// // (__bridge_transfer NSString *)这种桥接方式,对象所有权都交给Foundation的引用,并且内存也交给它管理
// // 因此如果用(__bridge NSString *)这种桥接方式,在最后释放对象的时候,需要手动release掉
// NSString *firstNamed = (__bridge_transfer NSString *)(firstName);
// NSString *lastNamed = (__bridge_transfer NSString *)(lastName);
//
// NSLog(@"%@ %@",lastNamed,firstNamed);
//
// // 2.获取联系人的电话
//
// // 2.1 获取到所有电话
// ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
//
// CFIndex index = ABMultiValueGetCount(phones);
// // 2.2 遍历所有电话
// for (int i = 0; i < index; i++) {
// NSString *phoneNumber = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phones, i);
// NSString *phoneLabel =(__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex(phones, i);
//
// NSLog(@"%@ %@",phoneLabel, phoneNumber);
// }
//
// // 释放不需要的对象
// CFRelease(phones);
//
//}
/**
* 该方法是在进入联系人详情界面的时候,点击联系人的各个属性会调用该方法
* 调用之后会自动退出控制器
* 注:两个代理方法不能同时调用 这个方法调用的时候,不能调用上面的代理方法
* @param peoplePicker 弹出来的联系人控制器
* @param person 联系人
* @param property 联系人属性
* @param identifier 标识
*/
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
}