gpt4 book ai didi

ios - 如何在 iOS 中选择联系电话号码?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:18:23 26 4
gpt4 key购买 nike

我知道如何在 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];

因此,我确实设置了 displayedProperties,但结果是一样的,即使我只选择 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),并确保实现所有委托(delegate)方法(即 didSelectContact - 当联系人只有一个电话号码时,以及 didSelectContactProperty - 当联系人有多个电话号码时)。

此外,通过设置限制联系人选择:

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

关于ios - 如何在 iOS 中选择联系电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41622979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com