如何在iOS中选择联系电话?

时间:2017-01-12 21:05:54

标签: ios cncontactpicker

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

编辑:这是我的代码

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

contactPicker.delegate = self;
contactPicker.displayedPropertyKeys = @[CNContactGivenNameKey, CNContactImageDataAvailableKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey, CNContactThumbnailImageDataKey, CNContactIdentifierKey];

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

所以,我确实设置了displayProperties,但结果是一样的,即使我只选择CNContactPhoneNumbersKey,我也没有提供所有联系人的号码,这样我就可以选择一个特定的号码。

我错过了什么?

编辑2:回调方法,按要求。我不知道它们有多重要,但不过。

-(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");
}

2 个答案:

答案 0 :(得分:5)

好的,这是答案:

首先,只使用要在javax.smartcardio.CardException: connect() failed at sun.security.smartcardio.TerminalImpl.connect(TerminalImpl.java:84) at rfidreadtest.RFIDReadTest.handleCard(RFIDReadTest.java:54) at rfidreadtest.RFIDReadTest.main(RFIDReadTest.java:42) Caused by: sun.security.smartcardio.PCSCException: SCARD_W_UNPOWERED_CARD at sun.security.smartcardio.PCSC.SCardConnect(Native Method) at sun.security.smartcardio.CardImpl.<init>(CardImpl.java:96) at sun.security.smartcardio.TerminalImpl.connect(TerminalImpl.java:78) ... 2 more 中选择的属性(在本例中为displayedPropertyKeys),并确保实现所有委托方法(即{{1} - 当联系人只有一个电话号码时,CNContactPhoneNumbersKey - 当联系人有多个电话号码时)。

此外,通过设置:

来限制联系人选择
didSelectContact

答案 1 :(得分:0)

您需要设置displayedKeys的{​​{1}}属性。如果您未设置任何键,则只能选择一个联系人。如果您设置了密钥,则选择一个联系人,然后选择所需的联系人属性。

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