2012-01-24 12 views
5

Sto utilizzando MFMailcomposerViewController nella mia app. Tutto funziona bene, tranne che ho bisogno di avere il no. dei destinatari e l'elenco dei destinatari che l'utente sta inviando. Qualsiasi aiuto o soluzione su questo problema ..Come ottenere l'elenco dei ricevitori in MFMailComposeViewController

+0

è possibile ottenere il numero di destinatari ma non li id ​​.. – hemant

+0

@hemant Può darmi suggerimenti su come ottenere il no. dei destinatari, anch'io ho solo bisogno di questo. Grazie in anticipo !! –

risposta

0

Infine Ho ricevuto la risposta e volevo condividerla ... Ho ricevuto un grande aiuto da [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

Non c'è un modo standard per farlo, il metodo delegato mailComposeController:didFinishWithResult:error: fornisce un riferimento al controller di visualizzazione composito dopo che è stato chiuso, ma non ci sono accessors su MFMailComposeViewController che si potrebbe usare per ottenere il conteggio destinatario

Una soluzione potrebbe essere quella di esaminare le subviews del controller della vista, trovare il campo di testo che è stato utilizzato per contenere i destinatari e ottenere il testo: vedi here

+0

ma sto ricevendo quel 'aaa.aa @ aa.com e altri 3' come una stringa, in quel caso non riesco a capire se l'id della e-mail sia corretta o meno, mi serve per lo stesso ... –

+0

come dice in quel blog, penso che tu possa usare questo solo per ottenere il numero di destinatari, se sono oltre questo limite di 25 caratteri, quindi non so di un modo per dire cosa erano tutti – wattson12

0

Non v'è alcun modo per fare questo, come di iOS 6 come composizione mail è ormai fatto attraverso una chiamata di servizio XPC a un processo remoto (MailCompositionService). C'è una grande spiegazione qui: http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/. Il livello più basso nella gerarchia della vista ora è un _UIRemoteView che si interfaccia con il processo remoto. Il codice dal post del blog allo http://jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html ora tornerà sempre nullo.

Problemi correlati