2015-03-24 1 views
1

У меня есть контакт со связанными контактами. Поэтому, когда я показываю этот контакт с ABPersonViewController, у него есть оригинальные электронные письма и электронные письма из связанных контактов. enter image description hereНе удается получить правильные данные от ABPersonViewController, если есть связанные контакты

Когда я выбираю связанные электронную почту ([email protected]), а затем передавать вызовы методов:

- (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 я получаю не выбран по электронной почте, но первый из них. У меня есть эта проблема только с комбинированными контактами.

Есть ли способ выбрать адрес электронной почты для контакта с подключенными контактами?

+1

Несвязанный, но не забудьте 'CFRelease (multi)'. – Rob

ответ

1

Единственный способ, которым я могу представить себе поведение, вы можете описать то, что вы могли бы быть ссылками на какую-то собственности или Иваре что вы заселенная, когда вы первый заселены displayedPerson свойства для ABPersonViewController в ABRecordRef. Ясно, что в этом фрагменте кода вы правильно используете свойство person, которое было передано этому методу делегата, но, возможно, вы упростили фрагмент кода при совместном использовании его с нами? Когда я использую ваш фрагмент кода с включенным shouldShowLinkedPeople, он отлично работает для меня для свойств связанного контакта.

Если вы уверены, что у вас нет проблемы с использованием неправильной переменной ABRecordRef, единственная возможность, которую я могу себе представить, это то, что я испытал странное поведение, используя контакты по умолчанию, которые предоставляются на симуляторе. Я мог бы предложить попробовать это на реальном устройстве с реальными связанными контактами.

+1

Спасибо за ответ! Похоже, это ошибка для ios7. На ios8 работает отлично :) –