MFMailComposeViewController ведет себя по-разному в симуляторе iOS 13 и устройстве - PullRequest
2 голосов
/ 01 ноября 2019

Я пытаюсь отобразить MFMailComposeViewController в приложении.

if MFMailComposeViewController.canSendMail() {
    let mailComposeViewController = MFMailComposeViewController()
    mailComposeViewController.navigationBar.tintColor = .white
    mailComposeViewController.mailComposeDelegate = self
    mailComposeViewController.setToRecipients(["support@gmail.com"])
    mailComposeViewController.setSubject("Feedback")
    present(mailComposeViewController, animated: true)
} else {
    print("This device is not configured to send email. Please set up an email account.")
}

В iOS 12 он появляется без проблем. И в симуляторе, и в устройстве.

enter image description here

Но когда я запускаю один и тот же проект на устройстве под управлением iOS 13, он выглядит следующим образом.

enter image description here

Цвет панели навигации исчез. Также кнопка отправки также невидима.

Поэтому я добавил mailComposeViewController.navigationBar.backgroundColor = .mv_primary, но она все равно не отображается на устройстве. Странно, но цвет фона отображается в симуляторе.

Однако, странное поведение. MFMailComposeViewController немедленно закрывается, когда я запускаю его в симуляторе.

enter image description here

Следующая ошибка также отображается в консоли Xcode.

[Common] [FBSSystemService] [0x5f27] Ошибка обработки открытого запроса для com.apple.MailCompositionService: {userInfo = {FBSOpenApplicationRequestID = 0x5f27;} DefaultError =;} 2019-11-01 14: 40: 05.214158 + 0530 MailCompose [11289: 262267] [Утвердить] Запрос подключения недействителен без возобновления нашего _serviceSessionConnection. Это ошибка2019-11-01 14: 40: 05.216901 + 0530 MailCompose [11289: 262054] [General] #CompositionServices _serviceViewControllerReady: NSError Domain = _UIViewServiceInterfaceErrorDomain Code = 0

Я полагаю, что странная ошибка отклонения является ошибкой Xошибка. Но как я могу исправить цвет фона и не отображать кнопку «Отправить» на устройстве?

Так я устанавливаю все стили, связанные с панелью навигации.

UINavigationBar.appearance().barTintColor = .mv_primary
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
if #available(iOS 11.0, *) {
    UINavigationBar.appearance().largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
}

Демонстрационный проект

...