Уволить mailComposeController - PullRequest
       6

Уволить mailComposeController

4 голосов
/ 01 ноября 2011

Я пытаюсь отклонить почту из моего приложения после того, как оно сделано, если пользователь отправляет или отменяет. Но по некоторым причинам это никогда не отклоняется. Я перепробовал почти все. Я также зарегистрировал это, таким образом, я буду видеть, пошло ли это, чтобы уволить метод. И проблема в том, что он никогда не входит в метод dismiss.

Что я делаю не так ???

- (IBAction)sendmail:(id)sender{
    UIGraphicsBeginImageContext(self.view.frame.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData * imageData = UIImageJPEGRepresentation(image, 1.0);

    if ( [MFMailComposeViewController canSendMail] ) {
        MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init];
        mailComposer.delegate = self;
        [mailComposer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"attachment.jpg"];

        [mailComposer setSubject:@"Hello from My App!"];

        NSString *emailBody = @"Sent from My App, Still not in AppStore!";
        [mailComposer setMessageBody:emailBody isHTML:YES];

        [self presentModalViewController:mailComposer animated:YES];
    }
}

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

    NSLog (@"mail finished"); // NEVER REACHES THIS POINT.
}

Ответы [ 2 ]

4 голосов
/ 04 января 2012

вы можете заменить эту строку:

[self dismissModalViewControllerAnimated:YES];

со следующей строкой:

[controller dismissModalViewControllerAnimated:YES];
3 голосов
/ 30 декабря 2011
Класс

MFMailComposeViewController наследуется от UINavigationController, поэтому его свойство делегата является «делегатом» для «части» класса контроллера навигации. Для обработки определенных методов делегата mail composer вам нужно установить свой объект как mailComposeDelegate свойство:

mailComposer.mailComposeDelegate = self;
...