首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ABPeoplePickerNavigationControllerDelegate: shouldContinueAfterSelectingPerson给出带有电子邮件地址的坏ABMultiValue id

ABPeoplePickerNavigationControllerDelegate: shouldContinueAfterSelectingPerson给出带有电子邮件地址的坏ABMultiValue id
EN

Stack Overflow用户
提问于 2013-09-12 23:46:50
回答 1查看 1.9K关注 0票数 1

当我选择具有多个电话号码的联系人并选择其中一个电话号码时,recipientAddress设置为所选的电话号码。但是,当我从具有多个电子邮件地址的联系人中选择电子邮件地址时,ABMultiValueIdentifier为零,并将其转换为零的索引,这始终是联系人中的最后一封电子邮件,不管我选择了哪一封。

我一定是做了一件令人尴尬的错事,而且很容易被发现,所以请把我的愚蠢暴露出来,让自己看起来很棒。

代码语言:javascript
复制
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
    @try {
        [eta addRecipient: person : property: identifier];
    }
    @catch (NSException *exception) {
        errExcLog(exception);
    }
    return NO;
}

- (void) addRecipient : (ABRecordRef) person : (ABPropertyID) property : (ABMultiValueIdentifier)identifier {
    ABMultiValueRef mvPropertyRef = ABRecordCopyValue(person,  property);
    int propertyIndex = ABMultiValueGetIndexForIdentifier( mvPropertyRef,  identifier);
    NSString *recipientAddress = (__bridge NSString *)(ABMultiValueCopyValueAtIndex( mvPropertyRef,  propertyIndex));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-13 04:38:25

这两种方法可能会帮助您获得选定的人的电子邮件id

代码语言:javascript
复制
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
  shouldContinueAfterSelectingPerson:(ABRecordRef)person
                            property:(ABPropertyID)property
                          identifier:(ABMultiValueIdentifier)identifier
{
    ABPersonViewController *controller = [[ABPersonViewController alloc] init];
    controller.displayedPerson = person;
    controller.displayedProperties = [NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonEmailProperty]];
    controller.personViewDelegate = self;
    [peoplePicker pushViewController:controller animated:YES];
    [controller release];
    return NO;
}

-(BOOL)personViewController:(ABPersonViewController *)personViewController
                shouldPerformDefaultActionForPerson:(ABRecordRef)person
                property:(ABPropertyID)property
              identifier:(ABMultiValueIdentifier)identifierForValue
{
    ABMutableMultiValueRef multiEmail = ABRecordCopyValue(person, property);

    NSString *emailAddress = (NSString *) ABMultiValueCopyValueAtIndex(multiEmail, identifierForValue);

    NSLog(@"strEmail %@",emailAddress);

    ABPeoplePickerNavigationController *peoplePicker = (ABPeoplePickerNavigationController *)personViewController.navigationController;
    [peoplePicker dismissViewControllerAnimated:YES completion:nil];
    return NO;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18776005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档