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];
}
Но вчера я обнаружил, что функция была сломана, так как на ней не отображалась кнопка "Отмена":
Я протестировал его на 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;
}
......
}
Это может быть поздний ответ, но надеюсь, что это работает для других.