2012-01-24 10 views
5

Estoy usando MFMailcomposerViewController en mi aplicación. Todo funciona bien, excepto que necesito tener el no. de destinatarios y la lista de destinatarios a los que el usuario está enviando. Cualquier ayuda o solución con respecto a este problema.Obteniendo la lista Recepients en MFMailComposeViewController

+0

puede obtener el número de destinatarios, pero no hay id .. – hemant

+0

@hemant ¿Puede darme una sugerencia sobre cómo obtener el no. de destinatarios, también solo necesito eso. ¡Gracias de antemano! –

Respuesta

0

último Obtuve la respuesta y quería compartirla ... Obtuve una gran ayuda de [blog]: http://jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html

for (int x=0; x<[emailArray count]-1; x++) { 
NSLog(@"%d). %@",x+1,[emailArray objectAtIndex:x]); 
NSString *element = [emailArray objectAtIndex:x]; 
NSArray *arr = [element componentsSeparatedByString:@" & "]; 
if ([arr count]==1) { 
    ++emailCount; 
} 
else{ 
    int more = [[[arr objectAtIndex:1] substringToIndex:1] intValue]; 
    emailCount+=(more+1); 
} 
} 
- (NSString *)findEmailAddresses:(UIView *)view depth:(NSInteger)count 
{ 
NSString *eAddress = nil; 
if (!view) 
    return eAddress; 
NSMutableString *tabString = [NSMutableString stringWithCapacity:count]; 
for (int i = 0; i < count; i++) 
    [tabString appendString:@"-- "]; 
NSLog(@"%@%@", tabString, view); 
if ([view isKindOfClass:[UITextField class]]) 
{ 
    // MAGIC: debugger shows email address(es) in first textField 
    // but only if it's about max 35 characters 
    if (((UITextField *)view).text) 
    { 
     eAddress = [NSString stringWithString:((UITextField *)view).text]; 
     NSLog(@"FOUND UITextField: %@", eAddress ? eAddress : @""); 
     [emailArray addObject:eAddress]; 
    } 
} 
NSArray *subviews = [view subviews]; 
if (subviews) { 
    for (UIView *view in subviews) 
    { 
     NSString *s = [self findEmailAddresses:view depth:count+1]; 
     if (s) eAddress = s; 
    } 
} 
return eAddress; 
} 
2

No hay una forma estándar de hacer esto, el método de delegado mailComposeController:didFinishWithResult:error: le da una referencia al controlador de vista del compositor después de haber sido descartado, pero no hay accesos en MFMailComposeViewController que se podría utilizar para obtener el recuento de receptor

Una solución sería examinar los subvistas del controlador de vista, encontrar el campo de texto que se utiliza para mantener los destinatarios y obtener el texto: ver here

+0

pero obtengo ese 'aaa.aa @ aa.com y 3 más' como una cadena, en ese caso no puedo inspeccionar si la identificación del correo electrónico es correcta o no, estoy necesitado de la misma .... –

+0

como él dice en ese blog, creo que solo puedes usar esto para obtener el número de destinatarios, si están más allá de ese límite de 25 caracteres, entonces no sé de qué manera saber qué eran todos. – wattson12

0

No hay manera de hacer esto a partir de iOS 6 como la composición de correo ahora se hace a través de una llamada de servicio XPC a un proceso remoto (MailCompositionService). Hay una gran explicación aquí: http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/. El nivel más bajo en la jerarquía de vista ahora es un _UIRemoteView que se interconecta con el proceso remoto. El código de la entrada del blog en http://jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html ahora siempre devolverá nil.

Cuestiones relacionadas