0

我的目标是允许用户从联系人中导入联系人详细信息(电话、姓名和电子邮件)。当我设置 ABPeoplePickerNavigationController 并将委托设置为 self 时,不会调用委托方法。正在显示人员选择器视图这是我的代码:

-(IBAction)importFromContacts:(id)sender
{

    ABPeoplePickerNavigationController *newNavController = [[ABPeoplePickerNavigationController alloc] init];
    newNavController.delegate = self;
    [self presentViewController:newNavController animated:YES completion:nil];

}

-(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
    NSLog(@"cancel");
    [self dismissViewControllerAnimated:YES completion:nil];
}

我错过了什么?我还想补充一点,ABPeoplePicker 类似乎不再是 UIAddressBook 框架的一部分。它也不在文档中。

4

2 回答 2

5

您正在设置delegate,它描述了应该处理 UINavigationController 的委托方法的对象。

改变

newNavController.delegate = self;

newNavController.peoplePickerDelegate = self;

(如Class Reference中所述,ABPeoplePickerNavigationController 是 UINavigationController 的子类。即使在同一个类中,对象具有多个委托也并非不寻常。)

于 2013-12-07T03:43:32.107 回答
0

使用这个 - (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person

于 2015-08-18T06:09:52.023 回答