iPhone:如何关闭MFMailComposeViewController?

iph*_*aaw 4 email iphone delegates objective-c

我在收到我提出的电子邮件时遇到了困难.

电子邮件打开很好,但一旦打开它就不会关闭mailComposeController:mailer didFinishWithResult:结果错误:错误处理程序永远不会被调用.

据我所知,我已经掌握了所有可以做到这一点.

任何有关我能看到什么的想法?

以下是我如何提出电子邮件:

-(IBAction)emailButtonPressed 
{
Run Code Online (Sandbox Code Playgroud)

NSString*text = @"我的电子邮件文本";

 MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
 mailer.delegate = self;

 [mailer setSubject:@"Note"];
 [mailer setMessageBody:text isHTML:NO];
 [self presentModalViewController:mailer animated:YES];
 [mailer release];
}
Run Code Online (Sandbox Code Playgroud)

然后在类中我有这个代码来处理close(但它永远不会被调用):

-(void)mailComposeController:(MFMailComposeViewController *)mailer didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
 [self becomeFirstResponder];
 [mailer dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

我的头文件定义为:

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>

@interface myViewController : UIViewController <UIActionSheetDelegate, UIAlertViewDelegate, MFMailComposeViewControllerDelegate, UINavigationControllerDelegate>
Run Code Online (Sandbox Code Playgroud)

谢谢

Iphaaw

Mic*_*hal 11

您正在设置委托错误,委托属性MFMailComposeViewController名为mailComposeDelegate,因此它应该是:

mailer.mailComposeDelegate = self;
Run Code Online (Sandbox Code Playgroud)

另一种可能的错误,我可以看到被调用dismissModalViewControllerAnimated:mailer-你应该把这个消息发送给谁提供的邮件界面视图控制器- self在这种情况下:

[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

我写了"可能的错误",因为如果iOS通过响应程序链路由消息它可能实际上有用 - 无论如何 - 文档说它应该发送给演示者.