4

注意到我用来模态弹出对话框以发送电子邮件的 MFMailComposeViewController 在 iOS6 中不再有效。它仍然会弹出对话框,但我无法设置正文,或在视图中输入任何内容。我所能做的就是按取消。

该类实现了 MFMailComposeViewControllerDelegate 接口,下面是一些代码:

//h file
@interface ASEmailSender : NSObject


//m file
@implementation MyEmailSender () <MFMailComposeViewControllerDelegate>
@end

@implementation MyEmailSender
...

- (void)emailFile:(ASFile *)file inController:(UIViewController *)viewController {
    MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
    if ([MFMailComposeViewController canSendMail]) {
        mailController.mailComposeDelegate = self;
        [mailController setSubject:@"my subject"];
        [mailController setMessageBody:@"msg body here" isHTML:NO];

        [viewController showIsLoading:YES];
        self.viewController = viewController
        [viewController presentModalViewController:mailController animated:YES];
    }   
}

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

它在 iOS5 中运行良好。

4

2 回答 2

1

我通过将 MyEmailSender 更改为 UIViewController 而不是 NSObject 来解决此问题。出于某种原因,这解决了在 iOS6 中运行时的问题。新代码如下所示:

//h file
@interface ASEmailSender : UIViewController <MFMailComposeViewControllerDelegate>


//m file
@implementation MyEmailSender
...
(same functions as before)

现在它适用于 iOS5 和 iOS6。

于 2012-10-24T15:31:19.617 回答
0

我修复了完全相同的问题(在 iOS6 中:空白作曲家屏幕,只有取消按钮有效。而在 iOS5 中,相同的代码可以正常工作。)

我确实导入了:

#import <MessageUI/MFMailComposeViewController.h>

但我忘记了这一点:

#import <MessageUI/MessageUI.h>

添加 MessageUI.h 的导入后,iOS 6 上不再出现问题。

于 2012-12-03T15:39:48.037 回答