MFMailComposeViewController

MFMailComposeViewController

我遇到了很长一段时间以来最奇怪的问题……而且我的想法已经用完了。

因此,我有一个MFMailComposeViewController,它是通过点击UIButton来启动的,它可以很好地启动邮件编辑器 View 。您会看到我已分配的主题,但在填充到:或正文字段之前,窗口会闪烁并消失。它引发此错误:



现在这是疯狂的部分。如果我切换到另一个也使用MFMailComposeViewController的应用程序并启动该应用程序,然后再切换回我的应用程序并再次启动邮件编辑器,则它可以正常工作。我无法解释。

这似乎只是在运行iOS 6而不是iPhone 5的手机上的一个问题。

我到处搜寻,似乎找不到其他遇到过同样问题的人。任何人有任何建议吗?

我已经链接了MessageUI.framework,并且我还发现它在Simulator或设备上不起作用,但是当我还链接Security.framework时,它开始在Simulator中工作,但仍然无法正常工作在设备上。

我的启动MFMailComposeViewController的代码如下:

在.h文件中

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

在.m文件中
-(void)displayComposerSheet {
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;

[picker setSubject:@"Support Request"];

// Set up recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"];

[picker setToRecipients:toRecipients];

// Fill out the email body text
NSString *emailBody = @"\n\nEmail from iOS";
[picker setMessageBody:emailBody isHTML:NO];

[self presentModalViewController:picker animated:YES];
}


// Dismisses the email composition interface when users tap Cancel or Send. Proceeds to update the message field with the result of the operation.
- (void)mailComposeController:(MFMailComposeViewController*)controller     didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{

    [self dismissModalViewControllerAnimated:YES];
}

更新:我想我已将其范围缩小到传递给UINavigationBar的外观委托(delegate)的设置。我使用自定义字体将其关闭,如果我将其关闭,则似乎可以正常工作...但是为什么在iPhone5上可以正常工作...

最佳答案

将UITextAttributeFont的自定义字体设置为UINavigationBar外观代理的titleTestAttributes会导致该错误,如OP和MightlyLeader所标识。

解决方法代码:

// remove the custom nav bar font
NSMutableDictionary* navBarTitleAttributes = [[UINavigationBar appearance] titleTextAttributes].mutableCopy;
UIFont* navBarTitleFont = navBarTitleAttributes[UITextAttributeFont];
navBarTitleAttributes[UITextAttributeFont] = [UIFont systemFontOfSize:navBarTitleFont.pointSize];
[[UINavigationBar appearance] setTitleTextAttributes:navBarTitleAttributes];

// set up and present the MFMailComposeViewController
MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.mailComposeDelegate = self;
[mailComposer setSubject:emailInfo[@"subject"]];
[mailComposer setMessageBody:emailInfo[@"message"] isHTML:YES];
mailComposer.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:mailComposer animated:YES completion:^{

    // add the custom navbar font back
    navBarTitleAttributes[UITextAttributeFont] = navBarTitleFont;
    [[UINavigationBar appearance] setTitleTextAttributes:navBarTitleAttributes];
}];

关于objective-c - MFMailComposeViewController引发viewServiceDidTerminateWithError,然后在使用自定义标题字体时退出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12624151/

10-12 13:30