MFMailComposeViewController显示空视图

时间:2013-11-27 01:36:03

标签: ios email ios7 messageui

我不确定我是否正确理解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];
}

2 个答案:

答案 0 :(得分:1)

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

如果我将相同的代码从- (void)viewDidLoad移动到可操作的方法,它就像魅力一样。因此,用户需要先按下按钮或采取行动才能使其正常工作。

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

我相信Apple已经做到这一点,以确保用户知道发送的是哪些电子邮件。 最初我打算利用这种方法捕获异常并通过电子邮件发送给我自己,如solution here中所述。

也许我忽略了一些事情,随意发表评论。

答案 1 :(得分:0)

您的邮件中是否有任何电子邮件帐户?如果所有帐户都被禁用或删除

[MFMailComposeViewController canSendMail] 

返回NO,然后没有出现。