2011-01-10 15 views
6

連絡先から電話番号を取得する必要があります。連絡先で選択した人の電話番号を取得する方法

私のコードは

- (IBAction)contacts { 

    NSLog(@"contacts clicked "); 

    ABPeoplePickerNavigationController *peoplePickerController = [[ABPeoplePickerNavigationController alloc] init]; 
    peoplePickerController.peoplePickerDelegate = self; 
    [self presentModalViewController:peoplePickerController animated:NO]; 
    [peoplePickerController release]; 

} 
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
     shouldContinueAfterSelectingPerson:(ABRecordRef)person { 
    NSString *number = (NSString *)ABRecordCopyValue(person, kABPersonPhoneProperty); 

    NSLog(@" %@",number); 
    return YES; 
} 

であるここでは、この

ABMultiValueRef 0x740b680 with 1 value(s) 
    0: _$!<Mobile>!$_ (0x7419880) - (929) 230-8622 (0x740b490) 

のようにコンソールに表示されることについてはここで(929) 230-8622は、私が唯一の携帯電話の番号を取得できますか、携帯電話番号です。

連絡先を選択した後、このビューコントローラを閉じる必要があります。私はこの

ようなコードを書くことについて

[自己dissmissModalViewControllerAnimated:YES]。

しかし、myclassがdissmissModalViewControllerに応答しない可能性があります。

どのように私はこのビューコントローラを閉じる必要が選択後に行うことができます。

誰でも私を助けることができます。

ありがとうございます。私はこのコードを追加することで使用して私の問題を解決し、あなたの

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

{  

    ABMultiValueRef mul; 
    mul=(NSString *) ABRecordCopyValue(person, kABPersonEmailProperty); 
    int count= ABMultiValueGetCount(mul); 
    NSString *name=(NSString *) ABMultiValueCopyValueAtIndex(mul,0); 

} 

答えて

4

のコード以下

+0

にこの作品は...二つの数字との接触の場合では、phonenumberselected携帯電話番号ですあなたが自宅の番号を選択し、あなたが携帯電話の番号を選択した場合はnullを返します...任意のアイデアの問題は何ですか?私はあなたとまったく同じコードを使ってきました... – simonthumper

2

書き込み。

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
     shouldContinueAfterSelectingPerson:(ABRecordRef)person 
           property:(ABPropertyID)property 
           identifier:(ABMultiValueIdentifier)identifier { 
    if (property == kABPersonPhoneProperty) { 
     ABMultiValueRef emails = ABRecordCopyValue(person, property); 
     CFStringRef phonenumberselected = ABMultiValueCopyValueAtIndex(emails, identifier); 
     CFStringRef emailLabelSelected = ABMultiValueCopyLabelAtIndex(emails, identifier); 
     CFStringRef emailLabelSelectedLocalized = ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(emails, identifier)); 
     NSLog(@"\n EmailValueSelected = %@ \n EmailLabelSelected = %@ \n \EmailLabeSelectedlLocalized = %@", phonenumberselected, emailLabelSelected, emailLabelSelectedLocalized); 

     NSString *aNSString = (NSString *)phonenumberselected; 



     [ self dismissModalViewControllerAnimated:YES ]; 
     return NO; 
    } 
    return YES; 
} 

私のような問題に直面している人におすすめです。

+0

変数だけでは特定の連絡先 – dks1725

+0

のためにあなたが持っているどのように多くの電話番号を知ることであるカウントはこれはいくつかのケースで非常に奇妙な振る舞いiphone 3.0 – MaheshBabu

関連する問題