peoplePickerNavigationController ловит щелчок фактического имени контакта - PullRequest
1 голос
/ 26 февраля 2012

Я пытаюсь поймать щелчок по имени контакта и получить контактную информацию оттуда.Вместо того, чтобы щелкнуть информацию контакта и щелкнуть поле оттуда.

Я могу получить все необходимые данные, но только после нажатия на контакт.Вот мой текущий код:

-(IBAction)buttonPressed:(id)sender
{
    ABPeoplePickerNavigationController *picker =[[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
}

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
        shouldContinueAfterSelectingPerson:(ABRecordRef)person 
        property:(ABPropertyID)property 
        identifier:(ABMultiValueIdentifier)identifier
{
    [self displayPerson:person];

    [self dismissModalViewControllerAnimated:YES];

    return YES;
}

-(void)displayPerson:(ABRecordRef)person
{
    NSString *name = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);

    NSLog(@"Name: %@", name);

    NSString *phone = nil;

    ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);

    if (ABMultiValueGetCount(phoneNumbers) > 0) {

        phone = (__bridge_transfer NSString *)

        ABMultiValueCopyValueAtIndex(phoneNumbers, 0);

    } else {

        phone = @"[None]";

    }

    NSLog(@"Phone: %@", phone);
}

- (void)peoplePickerNavigationControllerDidCancel: (ABPeoplePickerNavigationController *)peoplePicker 
{
    [self dismissModalViewControllerAnimated:YES];
}

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

Просто верните NO в shouldContinueAfterSelectingPerson.

Согласно документам :

Возвращаемое значение:
ДА, чтобы отобразить контакт и отклонить сборщик.
НЕТ ничего не делать.

Таким образом, возвращая NO, вы пропускаете шаг отображения. В любом случае вы сами увольняете сборщика.

0 голосов
/ 27 февраля 2012

Я использовал:

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier;

Но, когда я использовал следующее, он работает просто отлично. Это сводило меня с ума. лол

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person;
...