【发布时间】:2020-02-27 14:45:00
【问题描述】:
我正在尝试在应用中显示 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 中,它显示没有问题。在模拟器和设备中。
但是当我在运行 iOS 13 的设备上运行相同的项目时,它看起来像这样。
导航栏颜色消失了。发送按钮也是不可见的。
所以我添加了mailComposeViewController.navigationBar.backgroundColor = .mv_primary,但它仍然没有显示在设备上。奇怪的是,模拟器中显示的背景颜色。
但是有一个奇怪的行为。当我在模拟器中运行 MFMailComposeViewController 时,它会立即自行关闭。
以下错误也会显示在 Xcode 控制台中。
[Common] [FBSSystemService][0x5f27] 处理打开请求时出错 com.apple.MailCompositionService: { 用户信息 = { FBSOpenApplicationRequestID = 0x5f27; } 底层错误 = ; } 2019-11-01 14:40:05.214158+0530 MailCompose[11289:262267] [断言] 连接 请求无效而不恢复我们的 _serviceSessionConnection。 这是一个错误。 2019-11-01 14:40:05.216901+0530 MailCompose[11289:262054] [常规] #CompositionServices _serviceViewControllerReady: NSError Domain=_UIViewServiceInterfaceErrorDomain Code=0
我猜奇怪的关闭错误是 Xcode 错误。但是如何修复背景颜色和设备中未显示的发送按钮?
这就是我设置所有导航栏相关样式的方式。
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]
}
【问题讨论】:
-
我在 iOS 13.3 上遇到了完全相同的问题。您找到解决方案了吗?
-
@inankupeli 不幸的是没有。我也在 Apple Developer 论坛上发布了同样的问题,但那里也没有回复。
-
@Isuru 你找到解决办法了吗?
-
@Isuru 在你提到你试图在模拟器中运行它的问题中,但是这不能在模拟器中测试你需要一个设备,iOS 13 中的默认模式演示是页面表,您可以尝试将模式演示更改为全屏并查看是否获得相同的行为吗?这在设备中是否也以相同的方式响应?
标签: ios swift ios13 mfmailcomposeviewcontroller xcode11