Контроллер электронной почты - вылетает при прикосновении к отмене (но не при отправке) - PullRequest
1 голос
/ 04 ноября 2011

У меня очень простая реализация MFMailComposeViewController. Это работает очень хорошо - я передаю строку из своего приложения, которая будет отправлена ​​по электронной почте, а затем коснусь «отправить», и электронное письмо отправит. Нет проблем.

Однако, если я коснусь кнопки «Отмена», приложение вылетит (EXC_BAD_ACCESS). Должен ли я реализовать специальный метод для отмены MFMailComposeViewController? Кнопка отправки автоматически сделает это правильно, а кнопка отмены - нет. В чем разница между ними (за исключением того, что в одном случае электронное письмо будет отправлено, а в другом - нет)?

Вот мой код:

    #pragma mark - EMail

-(IBAction)emailCurrentPage:(id)sender {

    NSString *textToBeSend = @"Test";

    MFMailComposeViewController *mailComposer;

    mailComposer=[[MFMailComposeViewController alloc] init];
    mailComposer.mailComposeDelegate=self;
    [mailComposer setMessageBody:textToBeSend isHTML:NO];
    [self presentModalViewController:mailComposer animated:YES];

    [mailComposer release];

}

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {

    if (error) {

        NSString *msgOFF = [[NSString alloc] initWithFormat:@"I could not send the e-mail for the following reason: %@", error];
        UIAlertView *alertOFF = [[UIAlertView alloc]
                                 initWithTitle:@"Error"
                                 message:msgOFF
                                 delegate:self
                                 cancelButtonTitle:@"OK"
                                 otherButtonTitles:nil];
        [alertOFF show];
        [alertOFF release];
        [msgOFF release];

    }

    [self dismissModalViewControllerAnimated:NO];


}

1 Ответ

2 голосов
/ 04 ноября 2011

Попробуйте это:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error  {   
    NSString *message = @"";
    // Notifies users about errors associated with the interface
    switch (result) {
        case MFMailComposeResultCancelled:
            message = @"Mail: canceled";
            break;
        case MFMailComposeResultSaved:
            message = @"Mail: saved";
            break;
        case MFMailComposeResultSent:
        {
            message = @"Mail: sent";

            //Your code


        }
            break;
        case MFMailComposeResultFailed:
            message = @"Mail: failed";
            break;
        default:
            message = @"Mail: not sent";
            break;
    }
    [self dismissModalViewControllerAnimated:YES];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...