• 10月26日十九大新闻发言人专题新闻发布会 2019-03-22
  • 多交140分“亚裔税”?哈佛大学被控歧视亚裔学生 2019-03-22
  • 男子农田挖到古董抠出吓得魂飞魄散 2019-03-17
  • 瑞典南部城市发生枪击案致5人伤 警方:与恐袭无关 2019-03-10
  • 西安幼升小入学难问题出在哪儿教育部门将统筹协调安排 2019-03-10
  • 传统强队集体慢热(世界杯纵横) 2019-03-10
  • 乌鲁木齐水磨沟区开建两座立体停车库 2019-03-10
  • 山西新闻网特约摄影师名单&山西视觉志 2019-02-05
  • 广州旅游为何爆发出强大且持续的吸引力 2019-02-05
  • 今天看啥
      热点:

        北京赛车pk10历史记录 www.zwahn.com

        获取设备通讯录信息,获取设备通讯录


        直接上代码:

        #import "ViewController.h"

         

        #import <Contacts/Contacts.h>

        #import <ContactsUI/ContactsUI.h>

         

        @interface ViewController ()<CNContactPickerDelegate>

         

        @property (nonatomic, strong) UIButton *btn;

        @property (nonatomic, strong) UILabel *label;

        @property (nonatomic, strong) UILabel *labelNum;

         

        @end

         

        @implementation ViewController

         

        - (void)viewDidLoad {

            [super viewDidLoad];

         

            _btn = [UIButton buttonWithType:UIButtonTypeSystem];

            _btn.frame = CGRectMake(10, 20, 50, 30);

            [_btn setTitle:@"按钮" forState:0];

            [_btn addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside];

            [self.view addSubview:_btn];

            _label = [[UILabel alloc] initWithFrame:CGRectMake(10, 60, 50, 30)];

            [self.view addSubview:_label];

            _labelNum = [[UILabel alloc] initWithFrame:CGRectMake(10, 120, 50, 30)];

            [self.view addSubview:_labelNum];

        }

         

        - (void)btnAction {

            

            CNContactPickerViewController *contactPickerViewController = [[CNContactPickerViewController alloc] init];

            contactPickerViewController.delegate = self;

            

            [self presentViewController:contactPickerViewController animated:YES completion:nil];

        }

         

        // 如果实现该方法当选中联系人时就不会再出现联系人详情界面, 如果需要看到联系人详情界面只能不实现这个方法

        - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact {

            NSLog(@"选中某一个联系人时调用---------------------------------");

            

            [self printContactInfo:contact];

        }

         

        // 同时选中多个联系人

        - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact *> *)contacts {

            for (CNContact *contact in contacts) {

                NSLog(@"================================================");

                [self printContactInfo:contact];

            }

        }

         

        - (void)printContactInfo:(CNContact *)contact {

            

            NSString *givenName = contact.givenName;

            NSString *familyName = contact.familyName;

            NSLog(@"givenName=%@, familyName=%@", givenName, familyName);

            NSArray * phoneNumbers = contact.phoneNumbers;

            _label.text = familyName;

            

            for (CNLabeledValue<CNPhoneNumber*>*phone in phoneNumbers) {

                NSString *label = phone.label;

                CNPhoneNumber *phonNumber = (CNPhoneNumber *)phone.value;

                NSLog(@"label=%@, value=%@", label, phonNumber.stringValue);

                _labelNum.text = phonNumber.stringValue;

            }

        }

         

        // 注意:如果实现该方法,上面那个方法就不能实现了,这两个方法只能实现一个

        // - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty {

         

        //  NSLog(@"选中某个联系人的某个属性时调用");

        // }

         

        - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

            CNAuthorizationStatus authorizationStatus = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];

            if (authorizationStatus == CNAuthorizationStatusAuthorized) {

                

                NSLog(@"没有授权...");

        }

            

            // 获取指定的字段,并不是要获取所有字段,需要指定具体的字段

            NSArray *keysToFetch = @[CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey];

            CNContactFetchRequest *fetchRequest = [[CNContactFetchRequest alloc] initWithKeysToFetch:keysToFetch];

            CNContactStore *contactStore = [[CNContactStore alloc] init];

            [contactStore enumerateContactsWithFetchRequest:fetchRequest error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {

                NSLog(@"-------------------------------------------------------");

                NSString *givenName = contact.givenName;

                NSString *familyName = contact.familyName;

                NSLog(@"givenName=%@, familyName=%@", givenName, familyName);

                

                

                NSArray *phoneNumbers = contact.phoneNumbers;

                for (CNLabeledValue *labelValue in phoneNumbers) {

                    

                    NSString *label = labelValue.label;

                    CNPhoneNumber *phoneNumber = labelValue.value;

                    

                    NSLog(@"label=%@, phone=%@", label, phoneNumber.stringValue);

                }

                

                // *stop = YES; // 停止循环,相当于break;

            }];

        }

        北京赛车pk10历史记录 www.zwahn.comtrue//www.zwahn.com/IOSjc/1316436.htmlTechArticle获取设备通讯录信息,获取设备通讯录 直接上代码: #import "ViewController.h" #import Contacts/Contacts.h #import ContactsUI/ContactsUI.h @interface ViewControl...

        相关文章

          暂无相关文章
        相关搜索:

        帮客评论

        视觉看点
      • 10月26日十九大新闻发言人专题新闻发布会 2019-03-22
      • 多交140分“亚裔税”?哈佛大学被控歧视亚裔学生 2019-03-22
      • 男子农田挖到古董抠出吓得魂飞魄散 2019-03-17
      • 瑞典南部城市发生枪击案致5人伤 警方:与恐袭无关 2019-03-10
      • 西安幼升小入学难问题出在哪儿教育部门将统筹协调安排 2019-03-10
      • 传统强队集体慢热(世界杯纵横) 2019-03-10
      • 乌鲁木齐水磨沟区开建两座立体停车库 2019-03-10
      • 山西新闻网特约摄影师名单&山西视觉志 2019-02-05
      • 广州旅游为何爆发出强大且持续的吸引力 2019-02-05