2011-01-10 13 views
6

Necesito obtener el número de teléfono de los contactos.cómo obtener el número de teléfono de la persona seleccionada en los contactos

Para que mi código es

- (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; 
} 

aquí se muestra en la consola como esta

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

Aquí es (929) 230-8622 número de móvil, ¿Cómo puedo conseguir solamente número telefónico.

Después de seleccionar el contacto, necesito cerrar este controlador de vista.

Para que escribo código como este

[auto dissmissModalViewControllerAnimated: YES];

Pero muestra disminución que myclass puede no responder a dissmissModalViewController.

¿Cómo puedo hacer eso después de la selección, tengo que cerrar este controlador de vista.

¿alguien puede ayudarme pls.

Gracias de antemano.

Respuesta

4

resuelvo mi problema utilizando Al añadir este código.

- (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; 
} 

Espero que ayuden quienes enfrentan el problema como yo.

+0

Esto se comporta muy extraño en algunos casos ... En casos de contactos con dos números, el número de teléfono seleccionado es el número de móvil si selecciona el número de casa, y devuelve nulo si selecciona el número de móvil ... ¿Alguna idea de cuál es el problema? He usado exactamente el mismo código que tú ... – simonthumper

2

escribir a continuación código en su

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

{  

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

} 
+0

variable de conteo es solo saber cuántos números de teléfono tiene para ese contacto en particular – dks1725

+0

Es este trabajo en iphone 3.0 – MaheshBabu

Cuestiones relacionadas