ios - iOS7 中的 MFMailComposeViewController 自定义

标签 ios iphone objective-c ios7

我在 iOS7 中自定义 MFMailComposeViewController 时遇到问题。我试图隐藏和删除标题,因为我有一个自定义导航外观,我想将其完全带入邮件 View Controller 。我正在使用它,它在 iOS6 上运行良好,但在 iOS7 上首次打开时无法运行。当我打开 View 并取消邮件然后再次打开 Controller 时,它会继续工作。问题是第一次出现邮件 Controller 。这是我正在使用的代码:

if ([MFMailComposeViewController canSendMail]) {

    UIView* parentView = [self showProgress];

    MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
    controller.mailComposeDelegate = self;

    if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
        [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIColor lightGrayColor], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset, [UIFont fontWithName:@"CourierNewPS-BoldMT" size:1], UITextAttributeFont, [UIColor whiteColor],UITextAttributeTextColor, nil]];

    [controller setToRecipients:[NSArray arrayWithObject:[LNController shared].profile.email]];
    [controller setSubject:NSLocalizedString(@"APPSTORE_NAME", nil)];
    NSData* energyData = [[self createEnergyCSVFile] dataUsingEncoding:NSUTF8StringEncoding];
    NSData* timeData = [[self createTimeCSVFile] dataUsingEncoding:NSUTF8StringEncoding];
    [controller addAttachmentData:energyData mimeType:@"text/csv" fileName:NSLocalizedString(@"ENERGY", nil)];
    [controller addAttachmentData:timeData mimeType:@"text/csv" fileName:NSLocalizedString(@"TIME", nil)];

    [[[[controller viewControllers] lastObject] navigationItem] setTitle:@""];
    [self presentViewController:controller animated:YES completion:nil];

    [self hideProgress:parentView];

}  

有人经历过这个吗?任何帮助都会很棒。

最佳答案

您必须直接在 MFMailComposeViewController 上设置自定义代码。这是我的一个应用程序的示例:

if ([MFMailComposeViewController canSendMail]) {
    MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
    mailViewController.mailComposeDelegate = self;
    // Fix UI -- Add your custom UI here
    [mailViewController.navigationBar setTintColor:[UIColor whiteColor]];
    [mailViewController.navigationBar setBarTintColor:[UIColor whiteColor]];
    // Set params
    [mailViewController setToRecipients:@[@"e-mail@email.com"]];
    [mailViewController setSubject:NSLocalizedString(@"Feedback", @"Feedback")];
    [self presentViewController:mailViewController animated:YES completion:^{
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    }];
}

编辑:这是一个仅限 iOS 7 的应用程序,因此还要添加必要的检查,以免它在 iOS 6 上崩溃

关于ios - iOS7 中的 MFMailComposeViewController 自定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850754/

相关文章:

iphone - 如何从 iOS 中的 -id 返回 void 语句?

ios - 打开视频耳机没声音

ios - 在 Swift 2.3 中导航到 UIViewController

ios - 是否有 ios-ntp 的替代方法来获取原子/当前时间 ios?

ios - 为Xcode 11中的旧源代码启用自动布局

iphone - 如何从数字键盘上删除添加的完成按钮

iphone - uitableviewcell调整图像大小

ios - 获取 iOS 文件系统目录中存储对象的所有属性

objective-c - 为什么 ARC 保留方法参数?

iphone - JSON 响应 iPhone App 的非空验证