MFMessageComposeViewController ios7覆盖状态栏

MFMessageComposeViewController ios7覆盖状态栏,ios7,statusbar,mfmailcomposeviewcontroller,Ios7,Statusbar,Mfmailcomposeviewcontroller,我正在升级一个旧的iPad框架,它是一个splitView,主视图和详细视图都由UINavigationController控制。detailView显示一系列UIWebView。当用户触摸电子邮件按钮时,应用程序会以编程方式在detailView中显示标准电子邮件编写器工作表。这在iOS6设备上运行良好。工作表垂直向上滑动以覆盖导航栏,并在状态栏下方停止。在iOS7设备上,工作表在导航栏上向上滑动并覆盖状态栏。我尝试过的任何方法都不能阻止编写器工作表覆盖iOS7中的状态栏 这是电子邮件类的一部

我正在升级一个旧的iPad框架,它是一个splitView,主视图和详细视图都由UINavigationController控制。detailView显示一系列UIWebView。当用户触摸电子邮件按钮时,应用程序会以编程方式在detailView中显示标准电子邮件编写器工作表。这在iOS6设备上运行良好。工作表垂直向上滑动以覆盖导航栏,并在状态栏下方停止。在iOS7设备上,工作表在导航栏上向上滑动并覆盖状态栏。我尝试过的任何方法都不能阻止编写器工作表覆盖iOS7中的状态栏

这是电子邮件类的一部分代码。委托是通过电子邮件按钮间接调用此方法的UIViewController

-(void)displayComposerSheet {

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];

picker.navigationBar.barStyle = UIBarStyleBlackOpaque;
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
    picker.navigationBar.barStyle = UIBarStyleBlackTranslucent;
}

picker.modalPresentationStyle = UIModalPresentationCurrentContext;
picker.modalPresentationCapturesStatusBarAppearance = YES;

picker.mailComposeDelegate = self;

NSString *emailAddress = ruleEmailAddress;

// Set up recipients
NSArray *toRecipients = @[emailAddress];
[picker setToRecipients:toRecipients];
[picker setSubject:ruleNumber];
[picker setMessageBody:ruleText isHTML:YES];

[(UIViewController *)delegate presentViewController:picker animated:YES completion:nil];
}

感谢您提供有关如何防止编写器工作表覆盖iOS7设备上的状态栏的建议。

是否有任何具体原因将导航栏样式设置为半透明?我想这可能就是造成问题的原因。