0

我不确定我是否理解MFMailComposeViewController正确。我期待一个具有现有视图的视图控制器出现在我的屏幕上。我可以看到 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];
}

FT测试

#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];
}
4

2 回答 2

1

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

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

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

我相信 Apple 这样做是为了确保用户知道正在发送哪些电子邮件。最初我打算使用这种方法来捕获异常并通过电子邮件将它们发送给我自己,如这里的解决方案中所述。

也许我忽略了一些东西,请随时发表评论。

于 2013-11-27T11:59:37.823 回答
0

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

[MFMailComposeViewController canSendMail] 

返回 NO,然后没有任何结果。

于 2013-11-27T03:01:28.757 回答