我不确定我是否正确理解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];
}
答案 0 :(得分:1)
我终于找到了解决问题的方法。
如果我将相同的代码从- (void)viewDidLoad
移动到可操作的方法,它就像魅力一样。因此,用户需要先按下按钮或采取行动才能使其正常工作。
- (IBAction)gogogo:(id)sender
{
FTTest *test = [[FTTest alloc] init];
[test testmeup];
}
我相信Apple已经做到这一点,以确保用户知道发送的是哪些电子邮件。 最初我打算利用这种方法捕获异常并通过电子邮件发送给我自己,如solution here中所述。
也许我忽略了一些事情,随意发表评论。
答案 1 :(得分:0)
您的邮件中是否有任何电子邮件帐户?如果所有帐户都被禁用或删除
[MFMailComposeViewController canSendMail]
返回NO,然后没有出现。