Can't dismiss the email composer view in iPhone?

限于喜欢 提交于 2019-12-10 16:10:27

问题


I am new to iphone development.I have created a tabbar based application . In the first i want the email composer to be displayed. I am able to display it but the cancel and send button are not working,I don't know where do i go wrong .Please help me out. Here is my code.

- (void)viewDidLoad 
{
    [super viewDidLoad];
    [self displayComposerSheet];    
}

-(void)displayComposerSheet 
{
    picker = [[MFMailComposeViewController alloc] init];

   [[picker navigationBar] setTintColor:[UIColor blackColor]];

   picker.mailComposeDelegate = self;

   if ([MFMailComposeViewController canSendMail]) 
   {

            [picker setToRecipients:[NSArray arrayWithObjects:@"name@gmail.com",nil]];

            [picker setSubject:@"Sample"];

   }
   [self.view addSubview:picker.view];
   [self presentModalViewController:picker animated:YES];

}

 - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{

    [self dismissModalViewControllerAnimated:YES];

 }

回答1:


You are presenting the mail composer twice.

Remove the line:

[self.view addSubview:picker.view];

And replace the next line with:

[self.navigationController presentModalViewController:picker animated:YES];



回答2:


If you are adding only subview of mailcomposser you have to remove it from self.view, In your code you are adding subview and present also,

If you are use only use [self.view addSubview:picker.view]; than Try with to remove it.

 - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{
    [controller.view removeFromSuperview];

 }

I'm still suggest to use

[self.navigationController presentModalViewController:picker animated:YES]; for Present MFMailComposeViewController ,

and use [self dismissModalViewControllerAnimated:YES]; to dismiss it.




回答3:


Use this code:

MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
NSArray *toRecipients = [NSArray arrayWithObjects:@"niftyapplications@gmail.com", @"support@niftysol.com", nil]; 
[controller setToRecipients:toRecipients];
[controller setTitle:@"Contact Us"];
controller.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:controller animated:YES];


- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{
     [self becomeFirstResponder];
     NSString *strMailResult;
     switch (result)
     {
        case MFMailComposeResultCancelled:
        strMailResult = NSLocalizedString(@"E-Mail Cancelled",@"");
        break;
        case MFMailComposeResultSaved:
        strMailResult = NSLocalizedString(@"E-Mail Saved",@"");
        break;
        case MFMailComposeResultSent:
        strMailResult = NSLocalizedString(@"E-Mail Sent",@"");
        break;
        case MFMailComposeResultFailed:
        strMailResult = NSLocalizedString(@"E-Mail Failed",@"");
        break;
        default:
        strMailResult = NSLocalizedString(@"E-Mail Not Sent",@"");
        break;
     }

     UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ISO Audit",@"") message:strMailResult delegate:self  cancelButtonTitle:NSLocalizedString(@"OK",@"") otherButtonTitles:nil];
     [alertView show];
    [self dismissModalViewControllerAnimated:YES];
}



回答4:


Set Delegate of MFMailComposeViewController

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

mailcomposer.mailComposeDelegate = self; 

And Use this Delegate Method

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
}


来源:https://stackoverflow.com/questions/2530283/cant-dismiss-the-email-composer-view-in-iphone

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!