ユーザーがiPhoneからテストメールを送信できるアプリがあります。私のアプリは、次のようなメールの作成機能をアクティブにするメソッドを呼び出します。
-(void)displayComposerSheet
{
//set up a way to cancel the email here
//picker is an instance of MSMailComposeViewController already declared in the .h file
[picker setSubject:@"Test Mail"];
// Set up recipients
// Attach an image to the email
NSString *path = [[NSBundle mainBundle] pathForResource:@"Icon" ofType:@"png"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"Icon"];
// Fill out the email body text
NSString *emailBody = @"This is a test mail.";
[picker setMessageBody:emailBody isHTML:NO];
[self presentModalViewController:picker animated:YES];
NSLog(@"mail is working");
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
emailLabel.hidden = NO;
// Notifies users about errors associated with the interface
switch (result)
{
case MFMailComposeResultCancelled:
emailLabel.text = @"Mail sending canceled.";
break;
case MFMailComposeResultSaved:
emailLabel.text = @"Mail saved.";
break;
case MFMailComposeResultSent:
{
emailLabel.text = @"Mail sent.";
NSLog(@"It's away!");
UIAlertView *emailAlertView = [[UIAlertView alloc] initWithTitle:@"Sent!" message:@"Mail sent successfully." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[emailAlertView show];
[self dismissModalViewControllerAnimated:YES];
[self.navigationController popViewControllerAnimated:YES];
}
break;
case MFMailComposeResultFailed:
{
emailLabel.text = @"Mail sending failed.";
}
break;
default:
{
emailLabel.text = @"Mail not sent.";
}
break;
}
}
私の問題は、メールの作成機能がアクティブな場合、この機能を終了してアプリに戻ることができないことです。これを回避する唯一の方法は、実際に先に進んでメッセージを送信することです。ナビゲーションバーの左上隅に表示されるデフォルトの「キャンセル」バーボタンがあり、クリックすると、「ドラフトの削除」、「ドラフトの保存」、「キャンセル」の3つのオプションが表示されます。「下書き削除」を選択すると、メッセージ作成画面に戻る以外は何もしません。メールの作成機能を開始した後、送信する前にユーザーがアプリに戻ることができるようにする方法はありますか?これを実現するために「キャンセル」バーボタンに機能を追加する方法はありますか?
返信してくださった皆様、ありがとうございました。