iPhone: как закрыть MFMailComposeViewController? - PullRequest
4 голосов
/ 05 ноября 2010

У меня проблемы с закрытием сообщения электронной почты, которое я поднял.

Письмо открывается красиво, но после его открытия оно не закрывается, поскольку mailComposeController: mailer didFinishWithResult: result error: обработчик ошибок никогда не вызывается.

Насколько я могу судить, у меня есть все возможности, чтобы это сделать.

У кого-нибудь есть идеи, на что я могу посмотреть?

Воткак я поднимаю письмо:

-(IBAction)emailButtonPressed 
{

NSString * text = @ "My Email Text";

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

 [mailer setSubject:@"Note"];
 [mailer setMessageBody:text isHTML:NO];
 [self presentModalViewController:mailer animated:YES];
 [mailer release];
}

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

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

Мой заголовочный файл определен как:

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>

@interface myViewController : UIViewController <UIActionSheetDelegate, UIAlertViewDelegate, MFMailComposeViewControllerDelegate, UINavigationControllerDelegate>

Спасибо

Iphaaw

1 Ответ

11 голосов
/ 05 ноября 2010

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

mailer.mailComposeDelegate = self;

Другая возможная ошибка, которую я вижу, это вызов dismissModalViewControllerAnimated: на mailer- вы должны отправить это сообщение контроллеру представления, который представил почтовый интерфейс - self в этом случае:

[self dismissModalViewControllerAnimated:YES];

Я написал «возможную ошибку», потому что она может действительно работать, если iOS маршрутизирует сообщение через респондентав любом случае - в документации сказано, что ее следует отправить докладчику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...