mfmailcomposeviewcontrollerdelegate objective-c ios mfmailcomposeviewcontroller mfmailcomposer

objective c - mfmailcomposeviewcontrollerdelegate - MFMailComposeViewController se despide de inmediato



send email swift 4 (9)

¿Tiene algo en su viewDidDisappear: o viewWillDisappear métodos que descartaría un controlador de vista?

Si no es así, ¿puede publicar más de su código para el ViewController que presenta el MFMailComposeViewController?

La situación es que se presentará el MFMailComposeViewController. Vi que se presentó a medio camino, pero luego fue despedido.

Este es el error:

_serviceViewControllerReady: error: Dominio de error = _UIViewServiceInterfaceErrorDomain Code = 3 "No se pudo completar la operación. (_UIViewServiceInterfaceErrorDomain error 3.)"

Este es mi código fuente para presentar 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]; } }

El punto extraño es que a veces sucede, otras no. ¡Por favor ayúdame con esto! Paso casi 1 día hábil para resolver esto, pero no tengo éxito.


Después de almacenar MFMailComposeViewController en una propiedad sólida de mi clase en lugar de una variable local, ya no pude reproducir el comportamiento de auto-despido.


El problema para mí era un argumento incorrecto al llamar a la función de adjunto. Si tiene este problema con un archivo adjunto de correo electrónico, sugiero seguir la solución que se encuentra en este hilo , de la siguiente manera:

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


El uso de modelViewController está en desuso en iOS 6, use

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


Este problema puede ocurrir al mostrar un controlador de vista remoto, un controlador de vista ejecutado en otro proceso, como lo indica la referencia UIViewService en el mensaje de error.

He tenido este problema al mostrar un SKStoreProductViewController , que también es un controlador de vista remota . No estoy seguro de cuál es la causa raíz; Lo único que pareció activarlo para mí fue presentar repetidamente el controlador de vista.

Para el SKStoreProductViewController pude verificar este error en el bloque de loadProductWithParameters:completionBlock: método loadProductWithParameters:completionBlock: . ¿ MFMailComposeViewControllerDelegate te MFMailComposeViewControllerDelegate llamada con un error sobre esto? Es posible que todo lo que pueda hacer sea escuchar este error y mostrar un mensaje de error al usuario.

Probablemente ambos deberíamos presentar un radar de Apple sobre esto.


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

Utilice el código de arriba y verifíquelo en el dispositivo.


Me enfrento al mismo problema y la solución fue:

Borro el código relacionado con la apariencia general de la aplicación como

[[UILabel appearance]setText:@""]

y reemplazar con el código

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

Ahora funciona bien, así que tenga cuidado con los cambios generales de apariencia de la aplicación: podría ser la apariencia de la barra de navegación, tal y tal


Sé que esta es la última respuesta, pero puede ser de ayuda alguna otra.

Ahora mismo, enfrente el mismo problema, al resetting the simulator trabajo resetting the simulator para mi mismo problema. Déjeme saber si esto ayuda.


Su código parece correcto, y como se indicó, el mensaje de error sugiere que esto tiene algo que ver con UIView propiamente dicho (no específicamente con MFMail ). El problema casi seguramente se encuentra en otro lugar dentro de su código, y puede ser difícil solucionarlo.

Algunas cosas para buscar:

  1. Otras animaciones o ver transiciones / despidos del controlador suceden simultáneamente o incorrectamente ( posiblemente así )
  2. Liberar / retener problemas, por supuesto

Si nada de eso parece ser la solución, intente comentar todo lo demás que sucede en el controlador de vista que llama a este método y ver si funciona.

Si aún no puede hacerlo funcionar, presente la versión más simple que pueda de código defectuoso para que podamos resolver más problemas. :)