我知道如何在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");
}
好的,这是答案:
首先,仅使用您要在中选择的属性displayedPropertyKeys
(在本例中为CNContactPhoneNumbersKey
),并确保实现所有委托方法(即didSelectContact
-当联系人只有一个电话号码时,以及didSelectContactProperty
-当联系人拥有一个电话号码时)一个以上的电话号码)。
此外,通过设置以下限制联系人选择:
contactPicker.predicateForEnablingContact = [NSPredicate predicateWithFormat:@"phoneNumbers.@count > 0"];
contactPicker.predicateForSelectionOfContact = [NSPredicate predicateWithFormat:@"phoneNumbers.@count == 1"];
contactPicker.predicateForSelectionOfProperty = [NSPredicate predicateWithFormat:@"key == 'phoneNumbers'"];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句