当我尝试从我的应用中启动Instagram时,我遇到了问题。一切正常,我能够启动IG,甚至可以看到我发送的照片等。
问题是UIDocumentInteractionController
正在崩溃我的应用。是的,我做了我的研究。
我已经看到帖子LIKE THIS表明这是一个Apple bug,只要你可以修复崩溃,你应该可以正常并忽略Launch Services消息。
问题是我仍然遇到崩溃,并试图弄清楚如何解决它。
我在发表ViewController
HERE后发现了一篇关于添加IF-STATEMENT的帖子,这篇文章是用Objective-C编写的,而且这个例子不适用于UIDocumentInteractionController
。
我试图在Swift中对它进行一次攻击,但它仍然不适合我。如果有人可以提供帮助,我将不胜感激。
dic = UIDocumentInteractionController(URL: imageURL!)
dic.delegate = self
var annotationDictionary: [String: String] = ["InstagramCaption": "Test"]
dic.annotation = annotationDictionary
dic.UTI = "com.instagram.exclusivegram"
dic.presentOpenInMenuFromRect(CGRectMake(1, 1, 1, 1), inView: self.view, animated: true)
if dic.respondsToSelector("popoverPresentationController") {
Scripts.log("InstagramVC Did Respond to popoverPresentationController")
var popoverController: UIPopoverPresentationController = self.popoverPresentationController!
popoverPresentationController?.sourceView = self.view
}
答案 0 :(得分:2)
我的修复是将UIDocumentInteractionController变量声明为viewcontroller类的一部分,而不是在我设置注释和UTI并调用.presentOpenInMenuFromRect
的同一函数中创建它。所以我在类的顶部靠近任何函数,我声明了变量:
var docController = UIDocumentInteractionController()
然后当我准备好使用它时,我配置了现有UIDocumentInteractionController的所有内容而不是创建一个:
docController = UIDocumentInteractionController(URL: imageURL!)
docController.UTI = "com.instagram.exclusivegram"
docController.delegate = self
docController.annotation = ["InstagramCaption":"Text"]
docController.presentOpenInMenuFromRect(rect, inView: self.view, animated: true)
应用程序停止崩溃,Instagram现在加载了分配的图像/文本。
我在这里找到了引导我解决问题的建议:https://stackoverflow.com/a/16057399/428981然后适应Swift
答案 1 :(得分:1)
听起来你的UIDocumentInteractionController实例超出了范围。尝试将其作为该类的属性或其他方式来保留它。
答案 2 :(得分:0)
我遇到了同样的问题:将图片发送到Instagram工作但是瞬间崩溃了我的应用程序。我认为这与一旦另一个应用程序打开后系统如何处理UIDocumentInteractionController有关。如果您尝试通过嵌入式Facebook或Twitter框架发送图片,在您的应用程序顶部打开一个弹出窗口,则不会发生崩溃......
无论如何,我最终使它工作的方式是不将我的viewController声明为委托,所以:
// dic.delegate = self
缺点是你不能使用任何委托方法。就我而言,无论如何我都没有使用它们。