打开通讯录及回调

本文介绍如何在iOS应用中使用Objective-C与电话本进行集成,包括打开电话本、获取联系人信息并显示到搜索框中。
- (IBAction)openPhoneBook:(UIButton *)sender {//打开电话本
    
    _tableView.hidden = YES;
    
    ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init];
    peoplePicker.peoplePickerDelegate = self;
    peoplePicker.delegate = self;
    [self presentViewController:peoplePicker animated:YES completion:nil];
}

#pragma mark - 打开通讯录

#pragma mark - ABPeoplePickerNavigationControllerDelegate
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
    [peoplePicker dismissViewControllerAnimated:YES completion:^{}];
}


// Called after a person has been selected by the user.
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person NS_AVAILABLE_IOS(8_0)
{
    ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);
    NSString * phone  = @"";
    if (phoneNumbers) {
        //CFIndex count = ABMultiValueGetCount(phoneNumbers);
        phone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
        CFRelease(phoneNumbers);
    }
//    
//    NSString * firstname = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonLastNameProperty)); ////    NSString * lastname = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonFirstNameProperty)); ////    NSString * name = [firstname==nil?@"":firstname stringByAppendingString:lastname==nil?@"":lastname];
    
    if(phone.length && [phone hasPrefix:@"+86"]){
        phone = [phone substringFromIndex:3];
    }
    
    phone =  [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];
    self.searchTField.text = phone;
    
    [peoplePicker dismissViewControllerAnimated:NO completion:^{
    
        [self.searchTField becomeFirstResponder];
    }];
}

// Deprecated, use predicateForSelectionOfPerson and/or -peoplePickerNavigationController:didSelectPerson: instead.
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person NS_DEPRECATED_IOS(2_0, 8_0)
{
    ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);
    NSString * phone  = @"";
    if (phoneNumbers) {
        //CFIndex count = ABMultiValueGetCount(phoneNumbers);
        phone = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
        CFRelease(phoneNumbers);
    }
    
    NSLog(@"phone=%@",phone);
    
    if(phone.length && [phone hasPrefix:@"+86"]){
        phone = [phone substringFromIndex:3];
    }
    
    phone =  [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];
    
    self.searchTField.text = phone;
    
    [peoplePicker dismissViewControllerAnimated:YES completion:^{}];
    
    return NO;
}

 

转载于:https://www.cnblogs.com/h-tao/p/4981067.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值