Mail and Message not Dismissing from Alert View

南楼画角 提交于 2019-12-25 01:54:10

问题


I have a UIAlertView that launches an email and a messages screen. When a user clicks on the Alert's button, both views open, however, they do not close.

I have a tried adding:

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
    [self dismissModalViewControllerAnimated:YES];
}

to the body of the class, however, it did not help.

Here is how the email is presented:

    [viewController presentViewController:email animated:YES completion:nil];

Edit Here is the entire code I am using to present the email:

//send email...
-(void)sendEmail{

    //mail composer
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
    if(mailClass != nil){
        if([mailClass canSendMail]){

            //get the current view controller from the App Delegate
            apptester_appDelegate *appDelegate = (apptester_appDelegate *)[[UIApplication sharedApplication] delegate];
            UIViewController *viewController = [appDelegate getViewController];

            MFMailComposeViewController *email = [[MFMailComposeViewController alloc] init];
            email.mailComposeDelegate = self;

            //navigation bar color depends on iOS7 or lower...
            if(floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1){
                [[email navigationBar] setTintColor:[UIColor blackColor];
            }else{
                [[email navigationBar] setBarTintColor:[UIColor blackColor]];
            }

            //show the model view...
            [viewController presentViewController:email animated:YES completion:nil];

        }
    }
}

Has anyone else experienced this error?

This may not be relevant, but this app has a tab bar.


回答1:


Make sure you have set delegate for mail controller

   mail.mailComposeDelegate = viewController;

Also try this as well,

    [viewController.tabBarController presentViewController:email animated:YES completion:nil];

Have you try this method and pass "controller" instead of self:

   -(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
    {
       [controller dismissViewControllerAnimated:YES completion:nil];
    }

Thanks!




回答2:


It is the responsibility of presenting controller to dismiss the modal view. Make sure you implement the delegate of the modal in the presenting controller.




回答3:


Two things:

1) Make sure you set the mailComposeDelegate on the MFMailComposeViewController before you present it.

2) In your mailComposeController:didFinishWithResult:error: method, you should do:

[controller dismissModalViewControllerAnimated:YES];


来源:https://stackoverflow.com/questions/22458384/mail-and-message-not-dismissing-from-alert-view

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