24

La situazione è che MFMailComposeViewController sarà presentato. Ho visto che è stato presentato a metà strada, ma poi è stato respinto.MFMailComposeViewController respinge immediatamente

Questo è l'errore:

_serviceViewControllerReady:error: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "The operation couldn’t be completed. (_UIViewServiceInterfaceErrorDomain error 3.)"

Questo è il mio codice sorgente per presentare il MFMailComposeViewController:

-(void) MailExecute { 
    if ([MFMailComposeViewController canSendMail]) 
    { 
     MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; 
     mailViewController.mailComposeDelegate = self; 
     [mailViewController setSubject:NSLocalizedString(@"Check this new look", @"")]; 
     [mailViewController setMessageBody: @"my new look" isHTML:YES]; 

     [self presentModalViewController:mailViewController animated:YES]; 

     [mailViewController release]; 
    } 
    else 
    { 
     UIAlertView *alertInternal = [[UIAlertView alloc] 
             initWithTitle: NSLocalizedString(@"Notification", @"") 
             message: NSLocalizedString(@"You have not configured your e-mail client.", @"") 
             delegate: nil 
             cancelButtonTitle:NSLocalizedString(@"OK", @"") 
             otherButtonTitles:nil]; 
     [alertInternal show]; 
     [alertInternal release]; 
    } 
} 

Il punto strana è che a volte capita, a volte non è così. Per favore aiutatemi su questo! Trascorro quasi 1 giorno lavorativo per risolvere questo problema ma non ci riesco.

+1

si passa questa eccezione mentre la tua app su dispositivo o simulatore? –

+1

Molto probabilmente non correlato a mailComposeView, ma UIView in generale: ha ottenuto una nota di errore simile con quickLook. Ancora debugging ... – JOM

+0

Ciao JOM, hai scoperto qualcosa di nuovo su questo errore? – Truong

risposta

2

Il codice sembra corretto e, come indicato, il messaggio di errore suggerisce fortemente che questo ha qualcosa a che fare con UIView corretto (non nello specifico MFMail). Il problema si trova quasi sicuramente altrove nel codice e potrebbe essere difficile risolvere il problema.

Alcune cose da cercare:

  1. altre animazioni o transizioni View Controller/licenziamenti che accadono simultaneamente o in modo errato (possibly like this)
  2. di uscita/trattenere le questioni, ovviamente

Se nessuno dei sembra la soluzione, prova a commentare tutto ciò che accade nel controller della vista che chiama questo metodo e vedere se funziona allora.

Se ancora non riesci a farlo funzionare, presenta la versione più semplice possibile del codice in errore, in modo che possiamo risolvere ulteriormente. :)

+0

Grazie per il vostro aiuto. Il mio supervisore stava prendendo in consegna. Quindi non lo controllerà più. – Truong

0

Avete qualcosa nei vostri metodi viewDidDisappear: o viewWillDisappear che eliminerebbe un controller di visualizzazione?

In caso contrario, è possibile inserire più codice per ViewController che presenta MFMailComposeViewController?

+0

Sono abbastanza sicuro che non c'è niente di sbagliato con viewDidDisappear o viewWillDisappear. Ma non lo sto ancora investigando, grazie per il tuo aiuto. – Truong

+0

Non sto più indagando su questo bug. Grazie per l'aiuto. – Truong

-1

L'uso del Model-View-Controller è deprecato in iOS 6, uso

[self presentViewController:mailView animated:YES completion:nil]; 
+0

In questo modo non aiuta. – Truong

0

So che questo è il ritardo di risposta, ma può essere d'aiuto qualche altro.

Basta ora affrontare lo stesso problema, Per resetting the simulator funzionano bene per me per questo stesso problema. Fammi sapere se questo aiuta.

3

Questo problema può verificarsi durante la visualizzazione di un controller di visualizzazione remoto: un controller di visualizzazione eseguito in un altro processo, come indicato dallo UIViewService reference nel messaggio di errore.

Ho riscontrato questo problema durante la visualizzazione di SKStoreProductViewController, che è anche remote view controller. Non sono sicuro di quale sia la causa principale; l'unica cosa che sembrava averlo innescato per me era presentare il controller della vista ripetutamente.

Per il SKStoreProductViewController sono stato in grado di verificare questo errore nel blocco di completamento del metodo loadProductWithParameters:completionBlock:. Il MFMailComposeViewControllerDelegate ti dà un callback con un errore su questo?Potrebbe essere che tutto ciò che puoi fare è ascoltare questo errore e mostrare un messaggio di errore all'utente.

Probabilmente dovremmo entrambi archiviare un radar Apple su questo.

0

Dopo aver memorizzato MFMailComposeViewController in una proprietà forte della mia classe anziché in una variabile locale, non è stato più possibile riprodurre il comportamento di auto-eliminazione.

+0

Puoi taggare questa domanda. La domanda è correlata alla programmazione iOS? –

0

Il problema per me era un argomento non corretto quando si chiama la funzione di allegato. Se si è verificato questo problema con un allegato di posta elettronica vi suggerisco di seguire la soluzione trovata in this thread, come segue:

NSString *path = [self getDatabaseFilePath]; 
NSData *myData = [NSData dataWithContentsOfFile:path]; 
[picker addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:[path lastPathComponent]]; 
-1

io faccia lo stesso problema e la soluzione è stata:

io eliminare la comparsa di applicazione generale connesso codice come

[[UILabel appearance]setText:@""] 

e sostituire con il codice

[[UILabel appearanceWhenContainedIn:[self class], nil] setText:@""]; 

Ora sta funzionando bene quindi state attenti alle modifiche complessive di aspetto dell'applicazione: potrebbe essere l'aspetto della barra di navigazione, così e così

0

MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init];

if ([MFMailComposeViewController canSendMail]) 
{ 
    mailComposer.mailComposeDelegate = self; 
    [mailComposer setToRecipients:[NSArray arrayWithObject:@"[email protected]"] ]; 
    [mailComposer setSubject:@"Kapsie App Contact Support"]; 
    [mailComposer setMessageBody:@"Type Your Feedback message here" isHTML:NO]; 
    [self presentViewController:mailComposer animated:YES completion:nil]; 
} 

Utilizzare il codice sopra e controllarlo sul dispositivo.

Problemi correlati