【问题标题】:MFMessageComposeViewController not properly displayedMFMessageComposeViewController 未正确显示
【发布时间】:2012-04-13 05:10:27
【问题描述】:

我正在使用 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,但在此栏和视图的其余出口之间出现一个与状态栏大小相同的空白区域。状态栏显示在此屏幕中(第二期),但与作曲家视图的导航栏重叠。

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

有人知道怎么解决吗?

谢谢。

【问题讨论】:

    标签: objective-c ios sms


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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,然后返回应用程序,在添加或删除的状态栏中没有出现任何空白。

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

      干杯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多