我与链接的联系人有联系。因此,当我显示此联系时,ABPersonViewController会有来自链接联系人的原始电子邮件和电子邮件。
当我选择链接电子邮件(John-appleseed@mac.com),然后委托方法调用:
- (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
//get selected phone number
ABMultiValueRef multi = ABRecordCopyValue(person, property);
CFIndex index = ABMultiValueGetIndexForIdentifier(multi, identifier);
NSString *selectedContactData = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(multi, index);
return NO;
}
但是在selectedContactData中,我没有选择电子邮件,而是第一个。 我只有联合联系人才有这个问题。
是否有正确的方式从联系人的联系人中选择电子邮件?
答案 0 :(得分:1)
我能够想象您描述的行为的唯一方法是,您可能在第一个为ABRecordRef
填充displayedPerson
属性时填充的某个属性或ivar中引用了ABPersonViewController
。显然,在此代码段中,您正确使用传递给此委托方法的person
属性,但是在与我们共享时,您可能简化了代码段吗?当我使用启用了shouldShowLinkedPeople
的代码段时,对于链接的联系人属性,它可以正常使用。
如果您确定使用错误的ABRecordRef
变量时遇到问题,我可以想象的唯一其他可能性是我使用默认联系人遇到了奇怪的行为在模拟器上提供。我可能会建议在具有真实链接联系人的实际设备上尝试此操作。