После нажатия отмены в MFMessageComposeViewController ничего не происходит - PullRequest
3 голосов
/ 29 октября 2011

После этого после использования MFMailComposeViewController движение к MFMessageComposeViewController было прямолинейным, но есть улов.

Предположим, этот код:

MFMessageComposeViewController* mySMS = [[MFMessageComposeViewController alloc] init];
[mySMS setDelegate:self];
[self presentModalViewController:mySMS animated:YES];

Это работает таким образом для почты, но в смс вы должны установить другой делегат для внутренней структуры, как это:

[SMS setMessageComposeDelegate:self];

Надеюсь, вы не застряли на этом, как я сегодня рано.

Ответы [ 2 ]

4 голосов
/ 29 октября 2011

Вам необходимо реализовать метод делегата -(void)mailComposeController(MFMailComposeViewController*)controller didFinishWithResult (MFMailComposeResult)result error:(NSError*)error:

А внутри него вы должны распустить его самостоятельно:

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{
    [self dismissModalViewControllerAnimated:YES]; 
}
0 голосов
/ 03 июля 2014

Вы можете увидеть MFMailComposeResult в документации Apple

  enum MFMailComposeResult {
    MFMailComposeResultCancelled,
    MFMailComposeResultSaved,
    MFMailComposeResultSent,
    MFMailComposeResultFailed
 };
 typedef enum MFMailComposeResult MFMailComposeResult; 

И вы должны самостоятельно удалить контроллер в методе делегата

 - (void) mailComposeController:(MFMailComposeViewController *)controller          didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
 {
  switch (result){
    case MFMailComposeResultCancelled:
        NSLog(@"Mail cancelled");
        break;
    case MFMailComposeResultSaved:
        NSLog(@"Mail saved");
        break;
    case MFMailComposeResultSent:
        NSLog(@"Mail sent");
        break;
    case MFMailComposeResultFailed:
        NSLog(@"Mail sent failure: %@", [error localizedDescription]);
        break;
    default:
        break;
   }
// Close the Mail Interface
   [self dismissViewControllerAnimated:YES completion:NULL];
}
...