【发布时间】:2016-12-20 01:56:05
【问题描述】:
我们的应用仅支持纵向模式。展示一个 UIActivityViewController 是可行的。
但是,使用“消息”选项共享会使应用程序崩溃:
*** 由于未捕获的异常“UIApplicationInvalidInterfaceOrientation”而终止应用程序,原因:“支持 方向与应用程序没有共同的方向,并且 [MFMessageComposeViewController shouldAutorotate] 正在返回 YES'
与其他选项(例如 Facebook Messenger)共享有效。
类似 SO 问题 like this one 的解决方案不起作用,因为它们建议支持所有方向。我们只想支持纵向。
1) 只支持纵向,即Info.plist中只支持纵向,如何才能支持“消息”分享选项?
2) 为什么我们可以在Info.plist中只有纵向的其他应用程序中支持“消息”共享选项而这一个不支持?我们应该在哪里寻找调试目的?
// Define share objects
let objectsToShare = ["test message"] as [Any]
// Configure UIActivityViewController
let activityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityViewController.excludedActivityTypes =
[UIActivityType.addToReadingList,
UIActivityType.assignToContact,
UIActivityType.print,
UIActivityType.copyToPasteboard]
// Define completion handler
activityViewController.completionWithItemsHandler = doneSharingHandler
// Show UIActivityViewController
present(activityViewController, animated: true, completion: nil)
【问题讨论】:
-
我制作了一个小示例应用程序来测试您在做什么(仅支持纵向屏幕方向),但我无法重现您所引用的问题。我在 App Store 上有 2 或 3 个允许用户使用
UIActivityViewController共享内容的应用程序。它们都是仅限肖像的应用程序,我以前从未在消息、邮件或任何其他共享选项中遇到过这个问题。因此,我对您的建议是进一步检查应用程序崩溃的确切位置。我认为您应该重新检查您的代码,并确保您没有在代码的其他地方做任何事情来导致这个问题。我 -
非常感谢。项目比较复杂,想看看如何简化代码,让调试更简单。
-
你愿意去多 hackish?在我的回答中看到一个骇人听闻的提议。
-
@LeoNatan hahaha 一个你永远不想听到的问题... :) 将检查你的答案并在那里发表评论。感谢您的帮助!
标签: ios swift uiactivityviewcontroller mfmessagecomposeview