2014-09-21 16 views
13

Sto avendo un problema con MFMailComposeViewController_UIViewServiceInterfaceErrorDomain

sto ottenendo questo errore

viewServiceDidTerminateWithError: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "The operation couldn’t be completed. (_UIViewServiceInterfaceErrorDomain error 3.)" UserInfo=... {Message=Service Connection Interrupted} 

con questo codice

- (IBAction) mailbutton:(id)sender 
{ 

    if([MFMailComposeViewController canSendMail]) 
    { 

     [MSAPP.globalMailComposer setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
     [self presentViewController:MSAPP.globalMailComposer animated:YES completion:nil]; 

    } 
    else 
    { 

     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                message:@"Unable to mail. No email on this device?" 
                delegate:self 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
     [alert show]; 
     [MSAPP cycleTheGlobalMailComposer]; 
    } 
} 

risposta

3

Questo è un problema noto con il simulatore iOS 8. Vedere this post per una possibile soluzione alternativa.

è necessario allocare e di avviare MFMailComposeViewController in una fase in precedenza, e tenerlo in una variabile statica, ogni volta che è necessario , ottenere l'istanza MFMailComposeViewController statica e presentarlo.

E quasi sicuramente sarà necessario "ciclizzare" il globale MFMailComposeViewController dopo ogni utilizzo. Non è affidabile per "riutilizzare" lo stesso. Avere una routine globale che rilascia e quindi reinizializza il singleton MFMailComposeViewController. Chiamatela ogni volta dopo aver terminato con esso

merito va alla "Joe Blow" per il posto. A giudicare dal tuo codice, hai già dichiarato il compositore di posta globale. Prova a "riciclarlo" come suggerisce il post per vedere se questo risolve il tuo problema. Sto avendo lo stesso problema e purtroppo questa soluzione non risolve il mio. Posso confermare che questa soluzione funziona con il simulatore iOS 7.1 ma non con iOS 8, anche se è stato suggerito che funzionerà su un dispositivo fisico iOS 8.