我不确定我是否正确理解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中的说明通过电子邮件将异常发送给自己。
也许我正在忽略某些东西,请随时发表评论。