在我的代码中,我使用 ABPeoplePickerNavigationController 来选择人员。用户从联系人列表中选择人员后,我查看指定人员记录是否有任何电话号码:
- (BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
ABMutableMultiValueRef phones;
phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
if (phones == nil || ABMultiValueGetCount(phones) == 0)
{
return NO;
}
// other code....
}
我创建了联系人,向其中添加了电话号码并测试了我的代码。在 iOS 5 中,此代码运行良好。 电话变量包含一个电话号码。
但在 iOS 6 中,将联系人链接到 facebook 帐户后,phones变量不包含任何值。
取消与 facebook 帐户的联系后,一切正常。
我怎样才能用这种方法读取人的电话号码?
- (BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
UPD
如果我在上面的函数中返回 YES,那么在函数中
(BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
我可以以正常方式读取所有人的电话号码。那么为什么我不能在第一个函数中读取它们呢?