1

iOS 6では、MFMailComposeViewControllerユーザーが2番目の電子メールを送信しようとしても、表示されたものは閉じられません...

すべてが最初に完全に機能し、電子メールが送信されます。ただし、電子メールオプションを再度選択した場合MFMailComposeViewController、キャンセル時に却下されることはありません。

これが私がそれを実装した方法です:

- (IBAction)buttonEmailClick:(id)sender {
    if (![MFMailComposeViewController canSendMail]) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Can't send" message:@"This device is unable to send emails." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        return;
    }
    NSDictionary *contactsInfo = [self contactsInfoFromPlistNamed:kConfigPlistName];
    [mailComposeViewController setToRecipients:[NSArray arrayWithObject:[contactsInfo objectForKey:@"email"]]];
    //[mailComposeViewController setSubject:kEmailDefaultSubject];
    //[mailComposeViewController setMessageBody:text isHTML:NO];
    [self presentModalViewController:mailComposeViewController animated:YES];
}

そしてこれ:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
    UIAlertView *alert = nil;
    if (result == MFMailComposeResultSent) {
        alert = [[UIAlertView alloc] initWithTitle:@"Sent" message:@"Your email was sent." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    }
    else if (result == MFMailComposeResultFailed) {
        alert = [[UIAlertView alloc] initWithTitle:@"Failed" message:@"An error occured and your email was not sent." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    }

    [alert show];
    [self dismissModalViewControllerAnimated:YES];
}

iOS 5では正常に動作しますが、iOS6では動作しません。iOS6で非推奨ではないメソッドに置き換えようとしましたが、動作しません。

4

2 に答える 2

5

メールを送信するたびに、新しいMFMailComposeViewControllerを作成してみましたか?再利用すべきかどうかわかりません。

于 2013-03-15T20:08:19.887 に答える
0

あなたはこれを試すことができます:

MFMailComposeViewController * composer = [[MFMailComposeViewController alloc] init];
composer.delegate = self;

-(void)mailComposeController:didFinishWithResult:error:そのクラスをデリゲートに割り当てる場合は、呼び出す必要があります

于 2013-07-26T18:46:37.497 に答える