MFMessageComposeViewController未正确显示

时间:2012-03-29 14:24:20

标签: objective-c ios sms

我正在使用MFMessageComposeViewController来显示SMS发送界面。

我的应用使用全屏,状态栏被plist文件中的设置隐藏(状态栏最初隐藏= YES)。

当我向消息作曲家展示时:

+(void)composeSMS:(id)sender
{
    if (![MFMessageComposeViewController canSendText]) return;

    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];

    controller.wantsFullScreenLayout = YES;

    controller.messageComposeDelegate = sender;
    [controller setBody:@"He descubierto un App estupenda! . "];
    [controller setModalPresentationStyle:UIModalTransitionStyleFlipHorizontal];
    if (controller) [sender presentModalViewController:controller animated:YES];
    [controller release];

}

问题是当显示作曲家时导航栏位于顶部y = 0,但在此栏和视图的其余出口之间显示与状态栏大小相同的空白空间。状态栏显示在此屏幕(第二期)中,但与作曲家视图的导航栏重叠。

在其他未隐藏状态栏的项目中,这就像魅力一样。但这是第一个没有状态栏的项目,这种情况正在发生。

任何人都知道如何修复它?

感谢。

2 个答案:

答案 0 :(得分:3)

模态显示消息控制器后隐藏状态栏。像这样:

controller.wantsFullScreenLayout = NO;
[self presentModalViewController:controller animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES];

答案 1 :(得分:2)

我在应用程序中使用iMessage处理的方法是自己控制状态栏。 例如:

[[UIApplication sharedApplication] setStatusBarHidden:FALSE withAnimation:UIStatusBarAnimationSlide];
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:TRUE];
[controller release];

然后通过发送或取消完成:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
      [self dismissModalViewControllerAnimated:TRUE];
      [[UIApplication sharedApplication] setStatusBarHidden:TRUE withAnimation:UIStatusBarAnimationSlide];
      self.view.frame = CGRectMake(0.0, 0.0, [LayoutHelper width], [LayoutHelper height]);
      self.view.center = CGPointMake([LayoutHelper xCenterPoint], [LayoutHelper yCenterPoint]-20);
}

这似乎显示了iMessage,然后返回到应用程序时,状态栏中没有任何空白空间被添加或删除。

这是我的第一篇文章,所以我希望这会有所帮助。

欢呼声