我遇到了很长一段时间以来最奇怪的问题……而且我的想法已经用完了。
因此,我有一个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/