我尝试使用iOS9中的Contacts API将手机选择添加到iOS应用中。它应该调出CNContactsPickerViewController
并让用户只选择至少有一个电话号码关联的联系人。
如果有多个电话号码,系统会提示用户选择哪一个。
如果只有一个,只需从初始列表中选择联系人即可选择联系人。
行为几乎是正确的。我不被允许选择没有电话号码的联系人。如果我选择多个电话的联系人,系统会提示我选择一个,并调用该委托。如果我选择具有一个电话号码的联系人,则会返回,但不会调用任何代表。
我怀疑我需要为NSPredicate
添加predicateForSelectionOfProperty
,但我找不到任何查询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
{
}