iPhone в приложении электронной почты проблема - PullRequest
0 голосов
/ 04 марта 2011

когда я нажимаю кнопку sendMail, она переходит к кнопке почты, но когда я нажимаю кнопку отправить или отменить, она не вернет меня к моему заявлению.Есть предложения?

-(IBAction)sendMail {

    MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease] ;

    if ([MFMailComposeViewController canSendMail]) {
        [mailComposer setToRecipients:nil];
        [mailComposer setSubject:nil];
        [mailComposer setMessageBody:@"Default text" isHTML:NO];

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

Ответы [ 3 ]

4 голосов
/ 04 марта 2011

Вам необходимо установить делегата (как правило, тот же контроллер представления, который представил MFMailComposeViewController).Затем, когда пользователь нажимает кнопку «Сохранить» или «Отмена», MFMailComposeViewController вызовет -mailComposeController: didFinishWithResult: ошибка делегата.Поэтому установите себя в качестве делегата и определите следующий метод:

#pragma mark -
#pragma mark MessageUI Delegate Methods

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

    [controller dismissModalViewControllerAnimated:YES];
}
1 голос
/ 04 декабря 2011

Эта замечательная строка:

mailComposer.mailComposeDelegate = self;

- это то, что заставляло это случаться в течение многих дней, не зная, что именно это пошло не так.

И не забывайте их:

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

В дополнение к импорту MessageUI.framework в проекте.

Проверено в IOS5

1 голос
/ 06 марта 2011

Добавьте следующую строку под инициализацией вашего почтового композитора.

 mailComposer.mailComposeDelegate = self;//very important if you want feedbacks on what the user did with your email sheet.

Затем реализуйте метод делегата, как предложил Кенни.Вы можете использовать этот метод для выполнения пользовательских действий.

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{ 
 // Notifies users about errors associated with the interface
 switch (result)
 {
 case MFMailComposeResultCancelled:
     {
      //Do something, If you need to
     }
 break;

 default:
 break;
 }
 [self dismissModalViewControllerAnimated:YES];
}

Не забудьте подтвердить делегат, добавив

@interface YourViewController : UIViewController <MFMailComposeViewControllerDelegate> { }

Если у вас все еще есть проблемы, вы можете посетить следующий учебник, гдевсе хорошо объяснили: http://blog.mugunthkumar.com/coding/iphone-tutorial-in-app-email/

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