iOS 14 (Swift) 中的奇怪 MFMailComposeViewController 行为
Strange MFMailComposeViewController behaviour in iOS 14 (Swift)
我在我的应用程序中实现了 MFMailComposeViewController。但是当我向下滚动然后向上滚动时,导航栏开始闪烁并且第一次没有显示大标题。为了显示它,我需要非常努力地从屏幕顶部滚动到底部。
另一个奇怪的行为,它们可能是相关的。
如果我在另一个应用程序中打开此表单(它在其中运行良好),然后 return 到我的应用程序,它在我的应用程序中开始运行良好,直到我删除它并重新打开它。
也许这很重要:openMailApp 函数是从 objc 调用的 ViewController class.
该问题仅在iOS14中出现,在之前的版本中没有问题。
class func openMailApp(vc: UIViewController, delegate: MFMailComposeViewControllerDelegate) {
let mailComposeViewController = MFMailComposeViewController()
if MFMailComposeViewController.canSendMail() {
mailComposeViewController.mailComposeDelegate = delegate
mailComposeViewController.setToRecipients(["email@gmail.com"])
mailComposeViewController.setSubject("My subject")
mailComposeViewController.setMessageBody(".........\n...", isHTML: false)
vc.present(mailComposeViewController, animated: true, completion: nil)
}
}
我的问题和你的很相似。
我认为这是由于外观代理如下所示:
UINavigationBar.appearance().translucent = false
此效果对整个应用程序可见 - 也在 MFMailComposeViewController 中。
尝试设置UINavigationBar.appearance().translucent = true
。就我而言,它解决了问题。
我在我的应用程序中实现了 MFMailComposeViewController。但是当我向下滚动然后向上滚动时,导航栏开始闪烁并且第一次没有显示大标题。为了显示它,我需要非常努力地从屏幕顶部滚动到底部。
另一个奇怪的行为,它们可能是相关的。 如果我在另一个应用程序中打开此表单(它在其中运行良好),然后 return 到我的应用程序,它在我的应用程序中开始运行良好,直到我删除它并重新打开它。
也许这很重要:openMailApp 函数是从 objc 调用的 ViewController class.
该问题仅在iOS14中出现,在之前的版本中没有问题。
class func openMailApp(vc: UIViewController, delegate: MFMailComposeViewControllerDelegate) {
let mailComposeViewController = MFMailComposeViewController()
if MFMailComposeViewController.canSendMail() {
mailComposeViewController.mailComposeDelegate = delegate
mailComposeViewController.setToRecipients(["email@gmail.com"])
mailComposeViewController.setSubject("My subject")
mailComposeViewController.setMessageBody(".........\n...", isHTML: false)
vc.present(mailComposeViewController, animated: true, completion: nil)
}
}
我的问题和你的很相似。
我认为这是由于外观代理如下所示:
UINavigationBar.appearance().translucent = false
此效果对整个应用程序可见 - 也在 MFMailComposeViewController 中。
尝试设置UINavigationBar.appearance().translucent = true
。就我而言,它解决了问题。