Ios 当predicateForSelectionOfContact导致选择联系人时,如何使委托在CNContactPickerViewController()上激发
我正在尝试使用iOS9中的联系人API将电话选择添加到iOS应用程序。它应该调用Ios 当predicateForSelectionOfContact导致选择联系人时,如何使委托在CNContactPickerViewController()上激发,ios,objective-c,nspredicate,contacts,Ios,Objective C,Nspredicate,Contacts,我正在尝试使用iOS9中的联系人API将电话选择添加到iOS应用程序。它应该调用CNContactsPickerViewController,让用户只选择至少有一个相关电话号码的联系人 如果有多个电话号码,则应提示用户选择哪一个 如果只有一个联系人,只需从初始列表中选择联系人即可选择该联系人 这种行为几乎是正确的。我不允许选择没有电话号码的联系人。如果我选择了一个有多部电话的联系人,系统会提示我选择一部,然后会呼叫该代表。如果我选择一个有一个电话号码的联系人,它会返回,但不会呼叫任何代表 我怀疑
CNContactsPickerViewController
,让用户只选择至少有一个相关电话号码的联系人
如果有多个电话号码,则应提示用户选择哪一个
如果只有一个联系人,只需从初始列表中选择联系人即可选择该联系人
这种行为几乎是正确的。我不允许选择没有电话号码的联系人。如果我选择了一个有多部电话的联系人,系统会提示我选择一部,然后会呼叫该代表。如果我选择一个有一个电话号码的联系人,它会返回,但不会呼叫任何代表
我怀疑我需要为predicateForSelectionOfProperty
添加一个NSPredicate
,但我找不到任何对CNContactProperty
有效的格式查询。如果是,那么predicateForSelectionOfProperty
的适当谓词是什么?如果不是,我缺少什么
- (void)initiateIdSelectionViaContacts
{
CNContactPickerViewController *picker = [[CNContactPickerViewController alloc] init];
NSArray *propertyKeys = @[CNContactPhoneNumbersKey, CNContactGivenNameKey, CNContactFamilyNameKey, CNContactOrganizationNameKey];
NSPredicate *enablePredicate = [NSPredicate predicateWithFormat:@"(phoneNumbers.@count > 0)"];
NSPredicate *contactSelectionPredicate = [NSPredicate predicateWithFormat:@"phoneNumbers.@count == 1"];
picker.displayedPropertyKeys = propertyKeys;
picker.predicateForEnablingContact = enablePredicate;
picker.predicateForSelectionOfContact = contactSelectionPredicate;
picker.delegate = self;
[self presentViewController:picker animated:YES completion:nil];
}
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact
{
}
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty
{
}