MFMailComposeViewController dismisses right away
Asked Answered
E

9

24

The situation is the MFMailComposeViewController was going to be presented. I saw it was presented half-way done, but then it got dismissed.

This is the error:

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

This is my source code to present the 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];
    }
}

The weird point is that sometimes it happens, sometimes it doesn't. Please help me on this! I spend almost 1 working day to resolve this but no succeed.

Exult answered 4/12, 2012 at 5:44 Comment(8)
you go this exception while your app on Device or Simulator?Chevalier
Most likely not related to mailComposeView, but UIView in general: got similar error note with quickLook. Still debugging...Hitchcock
Hi JOM, did you find out anything new on this error?Exult
Have you added the MessageUI.framework?Revanche
Can you also please show your MFMailComposeViewController delegate methods?Necrotomy
Assuming one answer solved this or you found a solution, can you accept or enter it to close the open question?Aquitaine
Hey, was wondering if you managed to solve this. I am having this problem too but only is some circumstances and I cannot reproduce it!Jujutsu
I encountered the same error message with QuickLook, and the problem was that I was loading a PDF with a width of 1300+ pixels. When I rotated the pdf so that its width was ~700px, it worked fine.Cockcrow
C
2

Your code looks correct, and as stated the error message strongly suggests this has something to do with UIView proper (not MFMail specifically). The problem almost surely lies somewhere elsewhere within your code, and might be challenging to troubleshoot.

Some things to look for:

  1. Other animations or view controller transitions/dismissals happening simultaneously or incorrectly (possibly like this)
  2. Release/retain issues, of course

If none of that seems like the fix, try commenting-out everything else happening in the view controller that calls this method and see if it works then.

If you still can't get it working, present the simplest version you can of failing code so we can troubleshoot further. :)

Cognizant answered 25/12, 2012 at 9:0 Comment(1)
Thanks for your help. My supervisor was taking it over. So won't check it anymore.Exult
A
3

This problem can occur when displaying a remote view controller -- a view controller run in another process -- as indicated by the UIViewService reference in the error message.

I've had this problem when displaying an SKStoreProductViewController, which is also a remote view controller. I'm not sure what the root cause is; the only thing that seemed to trigger it for me was presenting the view controller repeatedly.

For the SKStoreProductViewController I was able to check for this error in the completion block of the loadProductWithParameters:completionBlock: method. Does the MFMailComposeViewControllerDelegate give you a callback with an error about this? It may be that all you can do is listen for this error and show an error message to the user.

We should both probably file an apple radar about this.

Angioma answered 23/6, 2013 at 5:14 Comment(0)
C
2

Your code looks correct, and as stated the error message strongly suggests this has something to do with UIView proper (not MFMail specifically). The problem almost surely lies somewhere elsewhere within your code, and might be challenging to troubleshoot.

Some things to look for:

  1. Other animations or view controller transitions/dismissals happening simultaneously or incorrectly (possibly like this)
  2. Release/retain issues, of course

If none of that seems like the fix, try commenting-out everything else happening in the view controller that calls this method and see if it works then.

If you still can't get it working, present the simplest version you can of failing code so we can troubleshoot further. :)

Cognizant answered 25/12, 2012 at 9:0 Comment(1)
Thanks for your help. My supervisor was taking it over. So won't check it anymore.Exult
G
0

Do you have anything in your viewDidDisappear: or viewWillDisappear methods that would dismiss a view controller?

If not, can you post more of your code for the ViewController that presents the MFMailComposeViewController?

Gibbeon answered 21/12, 2012 at 13:11 Comment(2)
I'm pretty sure there's nothing wrong with viewDidDisappear or viewWillDisappear. But I'm not investigating it anymore so thanks for your help.Exult
I'm not investigating this bug anymore. Thanks for your help.Exult
S
0

I know this is the late reply, but may be help some other.

Just now face the same problem, By resetting the simulator work fine for me for this same issue. Let me know if this helps.

Sultanate answered 23/6, 2013 at 4:58 Comment(0)
S
0

After I stored the MFMailComposeViewController in a strong property of my class instead of a local variable I could not reproduce the self-dismissing behaviour any more.

Stenson answered 14/3, 2014 at 18:41 Comment(1)
You may want to tag this question. Is the question related to iOS programming?Pulling
F
0

The issue for me was an incorrect argument when calling the attachment function. If you are having this issue with an email attachment I suggest following the solution found in this thread, as follows:

NSString *path = [self getDatabaseFilePath];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:[path lastPathComponent]];
Fda answered 31/7, 2014 at 7:20 Comment(0)
C
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];
}

Use above code and check it on device.

Chunk answered 19/11, 2014 at 7:12 Comment(0)
I
-1

Use of modelViewController is deprecated in iOS 6 , use

[self presentViewController:mailView animated:YES completion:nil];
Infinitive answered 28/5, 2013 at 12:38 Comment(0)
C
-1

I face the same problem and the solution was:

I delete the overall application appearence related code like

[[UILabel appearance]setText:@""] 

and replace with the code

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

Now it is working fine so be carefull on overall application appearence changes: it might be navigationbar appearance, so and so

Coonhound answered 1/8, 2014 at 10:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.