MFMessageComposeViewController показывал без кнопки отмены и заголовка

Мое приложение имеет функцию, позволяющую пользователям отправлять SMS своим контактам, которые не зарегистрировали наше приложение, чтобы пригласить их. Я реализовал это несколько недель назад, и это хорошо работает:

if ([MFMessageComposeViewController canSendText]) {
    MFMessageComposeViewController *controller = [MFMessageComposeViewController new];
    NSDictionary *contact = self.notRegisterdUser[index]; // got from reading user's contacts if allowed
    controller.recipients = @[contact.allKeys[0]];
    controller.body = @"some message";
    controller.messageComposeDelegate = self;

    [self presentViewController:controller animated:YES completion:nil];
}

Но вчера я обнаружил, что функция была сломана, так как на ней не отображалась кнопка "Отмена":

MFMessageComposeViewController проблема

Я протестировал его на iOS 8.1, 8.2, 8.3 и 8.4, он существует для всех. Что-то изменилось или я сделал не так?

1 ответ

Вы используете https://github.com/forkingdog/FDFullscreenPopGesture от forkingdog? Если так, то это проблема. Категория FDFullscreenPopGesture как-то конфликтует с всплывающим представлением смс. Есть проблема, говорящая об этом.

Решение было предоставлено в вопросе, и я проверил:

Вы должны отключить его при использовании MFMessageComposeViewController. Обратите внимание, что установка fd_viewControllerBasedNavigationBarAppearanceEnabled в NO не работает. Временное решение может быть:

(void)fd_pushViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    //Add this: 
    if ([self isKindOfClass:[MFMessageComposeViewController class]]) { 
        [self fd_pushViewController:viewController animated:animated];
        return; 
    } 
    ...... 
}

Это может быть поздний ответ, но надеюсь, что это работает для других.

Другие вопросы по тегам