iOS實現(xiàn)從通訊錄中選擇聯(lián)系人
更新時間:2021年08月25日 15:14:33 作者:imJackXu
這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)從通訊錄中選擇聯(lián)系人,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
有時候APP需要用戶輸入一位聯(lián)系人的姓名和電話,除了用戶手動輸入,一般也允許用戶從通訊錄中選擇一位聯(lián)系人(圖1),下面的代碼就是使用系統(tǒng)的<AddressBookUI/AddressBookUI.h>庫實現(xiàn)這一需求。

圖1
完整代碼:
#import "ViewController.h"
#import <AddressBookUI/AddressBookUI.h>
@interface ViewController ()<ABPeoplePickerNavigationControllerDelegate>
@property (weak, nonatomic) IBOutlet UITextField *nameTextField;
@property (weak, nonatomic) IBOutlet UITextField *phoneTextField;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
//用戶點(diǎn)擊選擇按鈕
- (IBAction)clickSelect:(UIButton *)sender {
ABPeoplePickerNavigationController *picker =[[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentViewController:picker animated:YES completion:nil];
}
//這個方法在用戶取消選擇時調(diào)用
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
[self dismissViewControllerAnimated:YES completion:^{}];
}
//這個方法在用戶選擇一個聯(lián)系人后調(diào)用
-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person{
[self displayPerson:person];
[self dismissViewControllerAnimated:YES completion:^{}];
}
//獲得選中person的信息
- (void)displayPerson:(ABRecordRef)person
{
NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString *middleName = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonMiddleNameProperty);
NSString *lastname = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);
NSMutableString *nameStr = [NSMutableString string];
if (lastname!=nil) {
[nameStr appendString:lastname];
}
if (middleName!=nil) {
[nameStr appendString:middleName];
}
if (firstName!=nil) {
[nameStr appendString:firstName];
}
NSString* phone = nil;
ABMultiValueRef phoneNumbers = ABRecordCopyValue(person,kABPersonPhoneProperty);
if (ABMultiValueGetCount(phoneNumbers) > 0) {
phone = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
} else {
phone = @"[None]";
}
//可以把-、+86、空格這些過濾掉
NSString *phoneStr = [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];
phoneStr = [phoneStr stringByReplacingOccurrencesOfString:@"+86" withString:@""];
phoneStr = [phoneStr stringByReplacingOccurrencesOfString:@" " withString:@""];
[self.nameTextField setText:nameStr];
[self.phoneTextField setText:phoneStr];
}
@end
源代碼下載:點(diǎn)擊打開鏈接
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于ios逆向過程中l(wèi)ldb調(diào)試技巧(推薦)
下面小編就為大家?guī)硪黄趇os逆向過程中l(wèi)ldb調(diào)試技巧(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
iOS 統(tǒng)計Xcode項目代碼行數(shù)的實例
下面小編就為大家分享一篇iOS 統(tǒng)計Xcode項目代碼行數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
詳解iOS14 Widget 開發(fā)相關(guān)及易報錯地方處理
這篇文章主要介紹了詳解iOS14 Widget 開發(fā)相關(guān)及易報錯地方處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
iOS應(yīng)用開發(fā)中監(jiān)聽鍵盤事件的代碼實例小結(jié)
這篇文章主要介紹了iOS應(yīng)用開發(fā)中監(jiān)聽鍵盤事件的代碼實例小結(jié),呼出鍵盤等操作為iOS App中的必備功能,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-03-03

