シンプルなアプリを作成しています (Xcode 4.2 と iOS 5 を使用し、iOS シミュレーターを使用してテストします)。これにより電子メールが送信され、電子メール作成ウィンドウが通常どおり非モーダル形式で開きます。電子メール作成の可能な結果の 1 つは、「下書きとして保存」、つまり MFMailComposeResultSaved です。このような場合、保存した下書きを取得するにはどうすればよいですか? または、さらに良いことに、このオプションを廃止できますか? (つまり、ユーザーが「メール作成」ウィンドウで変更を加えても、「下書きとして保存」オプションは表示されません。何か助けてください。
ViewController.h (ヘッダー ファイル) 内
-(void)showEmailComposer;
-(void) displayComposerSheet;
ViewController.m ファイル内:
-(void)showEmailComposer {
NSLog(@"showEmailComposer: begin");
Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass != nil)
{
if ([mailClass canSendMail]) {
NSLog(@"showEmailComposer: Calling displayComposerSheet");
[self displayComposerSheet];
}
}
}
#pragma mark -
#pragma mark Compose Mail
-(void) displayComposerSheet {
mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.mailComposeDelegate = self;
[self presentModalViewController:mailComposer animated:YES];
}
-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
NSString *alertTitle;
NSString *alertMsg;
// Notifies users on errors, if any
switch (result) {
case MFMailComposeResultCancelled:
alertTitle = @"Cancelled";
alertMsg = @"Mail composition got cancelled";
break;
case MFMailComposeResultSaved:
alertTitle = @"Success - Saved";
alertMsg = @"Mail got saved successfully!";
break;
case MFMailComposeResultSent:
alertTitle = @"Success - Sent";
alertMsg = @"Mail sent successfully!";
break;
case MFMailComposeResultFailed:
alertTitle = @"Failure";
alertMsg = @"Sending the mail failed";
break;
default:
alertTitle = @"Failure";
alertMsg = @"Mail could not be sent";
break;
}
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:alertTitle
message:alertMsg
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[self dismissModalViewControllerAnimated:YES];
}