MFMessageComposeViewController не отображается должным образом - PullRequest
2 голосов
/ 29 марта 2012

Я использую MFMessageComposeViewController, чтобы показать интерфейс отправки SMS.

Мое приложение использует полный экран, строка состояния скрыта настройками в файле plist (строка состояния изначально скрыта = ДА).

Когда я показываю композитору сообщение с:

+(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 ]

3 голосов
/ 28 мая 2012

Скрыть строку состояния после того, как вы модально представили сообщение контроллера. Примерно так:

controller.wantsFullScreenLayout = NO;
[self presentModalViewController:controller animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
2 голосов
/ 17 апреля 2012

То, как я справлялся с использованием 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, а затем возвращается в приложение без добавления пустого пространства в строке состояния.

Это мой первый пост, поэтому я надеюсь, что это как-то поможет.

ура

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...