我不确定我是否正确理解MFMailComposeViewController。我希望具有现有视图的ViewController出现在我的屏幕上。我可以看到FTViewController的视图。但是邮件编辑器从未出现。

我已经将原始问题简化到最低限度。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.

        FTViewController *vc = [[FTViewController alloc]init];
        self.window.rootViewController = vc;
    ..
    }


在FTViewController.m中

- (void)viewDidLoad
{
    [super viewDidLoad];
    FTTest *test = [[FTTest alloc] init];
    [test testmeup];
}


FTTest:

#import <MessageUI/MessageUI.h>

@interface FTTest : UIViewController <MFMailComposeViewControllerDelegate>

@implementation FTTest

- (void)testmeup
{
    BOOL ok = [MFMailComposeViewController canSendMail];
    if (!ok)
        return;
    MFMailComposeViewController* vc = [MFMailComposeViewController new];
    vc.mailComposeDelegate = self;
    [self presentViewController:vc animated:YES completion:nil];
}

最佳答案

我终于找到了解决我问题的方法。

如果将相同的代码从- (void)viewDidLoad移至可操作的方法,则它的工作原理就像一个超级按钮。因此,用户需要先按下按钮或采取措施才能使其正常工作。

- (IBAction)gogogo:(id)sender
{
    FTTest *test = [[FTTest alloc] init];
    [test testmeup];
}


我相信Apple这样做是为了确保用户知道发送了哪些电子邮件。
最初,我将使用这种方法来捕获异常,并按照solution here中的说明通过电子邮件将异常发送给自己。

也许我正在忽略某些东西,请随时发表评论。

10-08 17:51