我想做的就是向用户展示人员选择器,让他选择他想要的所有联系人,最后将所有这些联系人的电子邮件地址放入数组中。
最好的办法是只向用户显示带有电子邮件的联系人。
到目前为止,我唯一能做的就是向人员选择器提供以下代码:
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
然后我尝试使用此代码来获取所选联系人的电子邮件:
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonEmailProperty);
[email addObject:(__bridge NSString*)ABMultiValueCopyValueAtIndex(multi, 0)];
[self dismissModalViewControllerAnimated:YES];
return YES;
}
但是,一旦我选择了联系人,选择器就会消失,所以我不知道如何继续。
此外,当我选择联系人时,我会在控制台中看到以下内容:
"Unbalanced calls to begin/end appearance transitions for
<ABMembersViewController: 0xa1618c0>."
任何帮助,将不胜感激。
我不确定您是否解决了您的问题,但如果其他人发现这篇文章也许会对他们有所帮助。
我从 ABPeoplePickerNavigationController 收到电子邮件所做的就是删除
[self dismissModalViewControllerAnimated:YES];
from
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person;
然后我用它来获取电子邮件并关闭控制器
- (BOOL)peoplePickerNavigationController(ABPeoplePickerNavigationController*)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
if (kABPersonEmailProperty == property)
{
ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonEmailProperty);
NSString *email = (__bridge NSString *)ABMultiValueCopyValueAtIndex(multi, 0);
NSLog(@"email: %@", email);
[self dismissModalViewControllerAnimated:YES];
return NO;
}
return YES;
}
它允许用户选择特定的电子邮件并在没有任何错误的情况下关闭控制器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)