4

私は、ユーザーがアプリから電子メールで送信する PDF を作成する iPad アプリに取り組んでいます。PDF を添付する電子メールを正常に設定できましたが、MFMailComposeViewController を閉じることができません。この問題に関する他のいくつかの質問を読み、彼らがしていることを真似ようとしましたが、メール作成者はまだ却下しません。コードを閉じるには、コードで何を変更する必要がありますか?

- (IBAction)submitDailyReportButton:(id)sender {

MFMailComposeViewController *mail = [[MFMailComposeViewController alloc]init];
[mail setMailComposeDelegate:self];

if ([MFMailComposeViewController canSendMail]) {

    NSString *email =@"admin@domain.com";
    NSArray *emailArray = [[NSArray alloc]initWithObjects:email,nil];
    [mail setToRecipients:emailArray];

    [mail setSubject:@"Daily Report"];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *newFilePath = [[paths objectAtIndex:0]stringByAppendingPathComponent:@"report.pdf"];

    NSData *pdfData = [NSData dataWithContentsOfFile:newFilePath];
    [mail addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"report.pdf"];
    NSString *body = @"Please review the attached daily report";
    [mail setMessageBody:body isHTML:NO];
    [mail setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [self presentViewController:mail animated:YES completion:nil];

}else{

    NSLog(@"Message cannot be sent");

}

}

4

1 に答える 1

13

デリゲート メソッドを実装し、デリゲート メソッドでビュー コントローラーを閉じる必要があります。

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
    [self dismissViewControllerAnimated:YES completion:nil];
}

補足 - メールを送信できない場合は、メール コンポーザを作成する必要はありません。割り当てをifステートメント内に移動します。

于 2013-05-21T03:32:25.220 に答える