当我不在我的应用程序中自定义字体时,MFMailComposeViewController 会显示并且工作正常。但是当我这样做时,有 50% 的时间它被呈现并直接调用他的代表,mailComposeController:didFinishWithResult:
结果MFMailComposeResultCancelled
与用户只是尝试关闭它完全一样。
并且还会在控制台中触发此错误:
_serviceViewControllerReady:error: Error Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed. (XPCObjectsErrorDomain error 2.)"
看起来邮件编辑器不喜欢外观代理,但问题是它不可能禁用外观代理。
对于我的应用程序中的每个导航栏,我都有一个自定义设计。为了实现这一点,我使用了这样的外观代理:
UIImage *navBarBackground = [UIImage stretchableHorizontalImageNamed:@"navbar-background"];
[[UINavigationBar appearance] setBackgroundImage:navBarBackground forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navbar-shadow"]];
[[UINavigationBar appearance] setTitleTextAttributes:@{
UITextAttributeTextColor: [UIColor colorWithRed:0.965f green:0.635f blue:0.647f alpha:1.f],
UITextAttributeFont : [UIFont brothersBoldFontOfSize:20.f],
UITextAttributeTextShadowColor: [UIColor blackColor],
UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0, -1)]
}];
UIBarButtonItem *navBarButtonItemAppearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];
[navBarButtonItemAppearance setTitleTextAttributes:@{
UITextAttributeTextColor: [UIColor colorWithRed:0.478f green:0.008f blue:0.023f alpha:1.f],
UITextAttributeFont : [UIFont brothersBoldFontOfSize:17.f],
UITextAttributeTextShadowColor: [UIColor colorWithWhite:1.f alpha:0.3f],
UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0, 1)]
} forState:UIControlStateNormal];
我使用以下内容删除了弹出框的一些背景自定义:
[[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
它对弹出框工作正常。但是无法为邮件编写器删除它,即使我使用“包含在”MFMailComposeViewController 并将其设置为nil
它仍然存在。
我也尝试对它进行子类化或设置系统字体,但这并没有改变任何东西。他得到介绍,打印错误,打电话给他的代表并被解雇。我刚刚看到,当它工作时,系统没有应用字体,当它没有应用时,它会显示如下自定义字体。