ビュー コントローラーが iOS 7 でマージされた連絡先を表示しているときに、ABPersonViewController でのアクションの処理に問題があります。
以下の例では、ABPersonViewController は表示されている連絡先の 7 行を示していましたが、プロパティの ABMultiValueRef をフェッチすると、最初の行が非表示になっている 8 行が返されます。
インデックスの値が読み取られると、それは非表示になるため、読み取られるすべての値は ABPersonViewController に表示された値とは異なります
-(BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{
if (property == kABPersonPhoneProperty){
ABMultiValueRef phone = ABRecordCopyValue(person, property);
CFIndex theindex = ABMultiValueGetIndexForIdentifier(phone, identifier);
NSString *selectedValue = (NSString *)ABMultiValueCopyValueAtIndex(phone, the index);
// DO SOMETHING WITH THE SELECTED VALUE
CFSafeRelease(phone);
CFSafeRelease(selectedValue);
}
return NO;
}
連絡先が結合されたときにインデックスの正しい値を取得する方法はありますか、または ABPersonViewController に実際に表示されたプロパティの MultiValueRef を取得する方法はありますか?