我知道如何在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");
}
答案 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}}属性。如果您未设置任何键,则只能选择一个联系人。如果您设置了密钥,则选择一个联系人,然后选择所需的联系人属性。
实施适当的委托方法以完成该过程。