我在几个以前版本的应用程序中使用了UIActivityViewController实例,以便通过AirDrop和其他服务共享内容。现在,在没有重新编译的情况下,当在iOS 11 Beta中运行应用程序时,对话框(UIActivityViewController实例)显示以下行,其中包含消息"无法加载" :
以下是代码:
let handlerOk = { () -> Void in
let activityItems = [NSURL(fileURLWithPath: fullPath, isDirectory: true)]
self.viewControllerShare = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
if let viewControllerShare = self.viewControllerShare {
viewControllerShare.popoverPresentationController?.sourceView = sender
let excludedActivities = [
UIActivityType.postToFacebook,
UIActivityType.postToTwitter,
UIActivityType.postToWeibo,
//UIActivityType.message,
//UIActivityType.mail,
UIActivityType.print,
UIActivityType.copyToPasteboard,
UIActivityType.assignToContact,
UIActivityType.saveToCameraRoll,
UIActivityType.addToReadingList,
UIActivityType.postToFlickr,
UIActivityType.postToVimeo,
UIActivityType.postToTencentWeibo,
UIActivityType.openInIBooks
]
viewControllerShare.excludedActivityTypes = excludedActivities
self.present(viewControllerShare, animated: true, completion: nil)
}
}
现在我正在使用Swift 4中的XCode 9进行编译,但我不认为这是相关的,因为如果在iOS 11中运行较旧版本的应用程序(使用XCode 8编译) .somenthing甚至从TestFlight下载二进制文件)问题是一样的。所以这看起来像iOS 11 API问题......
对话框初始化是否有任何新内容可能会阻止"无法加载"要显示的行?
编辑:我测试了使用相同共享对话框的第三方应用(来自Apple),发现该行属于iCloud。但我没有在我的应用程序中使用iCloud,因此之前的UIActivityViewController行为是正确的:它只是没有显示任何内容。所以我做了一个实验:禁用iOS'设置第三方应用程序的iCloud权限,它显示相同的unkind"无法加载"信息。我希望这不是最终iOS 11版本的工作方式,而且它只是一个Beta问题。
尽管如此,仍然欢迎变通方法!谢谢!