如何在iOS中select联系人电话号码?

我知道如何在iOS中select联系人(使用CNContactPickerViewController),但是我怎样才能为联系人select一个特定的电话号码,而不是联系人本身呢? 根据文件,这应该是可能的,但我没有发现如何。

编辑:这是我的代码

CNContactPickerViewController *contactPicker = [[CNContactPickerViewController alloc] init]; contactPicker.delegate = self; contactPicker.displayedPropertyKeys = @[CNContactGivenNameKey, CNContactImageDataAvailableKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey, CNContactThumbnailImageDataKey, CNContactIdentifierKey]; [self presentViewController:contactPicker animated:YES completion:nil]; 

所以,我设置了显示的属性,但结果是一样的,即使我只select了CNContactPhoneNumbersKey,我也没有显示所有联系人的号码,所以我可以select一个特定的号码。

我错过了什么?

编辑2:根据要求的callback方法。 我不知道他们有什么意义,但是。

 -(void) contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{ //NSLog(@"Contact : %@",contact); NSString* contactName = [NSString stringWithFormat:@"%@%@%@", contact.givenName, @" ", contact.familyName]; [currentButton setTitle:contactName forState:UIControlStateNormal]; [currentName setText:contactName]; ... } -(void) contactPickerDidCancel:(CNContactPickerViewController *)picker { //NSLog(@"Cancelled"); } 

好的,这是答案:

首先,只使用您要在displayedPropertyKeys的属性对话框中select的属性(在本例中是CNContactPhoneNumbersKey ),并确保实现所有的委托方法(即,两个didSelectContact – 当联系人只有一个电话号码,并且select了联系人didSelectContactProperty -当联系人有多个电话号码时)。

Furhtermore,通过设置来限制联系人select:

 contactPicker.predicateForEnablingContact = [NSPredicate predicateWithFormat:@"phoneNumbers.@count > 0"]; contactPicker.predicateForSelectionOfContact = [NSPredicate predicateWithFormat:@"phoneNumbers.@count == 1"]; contactPicker.predicateForSelectionOfProperty = [NSPredicate predicateWithFormat:@"key == 'phoneNumbers'"]; 

您需要设置CNContactPickerdisplayedKeys属性。 如果你没有设置任何键,你只能select一个联系人。 如果您设置了键,那么您select一个联系人,然后您select一个所需的联系人属性。

实施适当的委托方法来完成该过程。