【发布时间】:2017-10-02 13:37:56
【问题描述】:
我使用UIActivityViewController 在iOS 11 上分享一个webview url,当使用Copy 然后转到消息应用然后粘贴,它被粘贴了两次。
出于好奇,我尝试对 Safari、Chrome、Firefox 以及除消息以外的其他应用程序执行相同的操作。结果很有趣:
- 从 Safari 应对始终适用于任何应用程序
- 从 Chrome 或 FireFox 复制在 Notes 应用程序中有效,但它会在任何具有 TextField 的应用程序(消息、WhatsApp、Slack、Signal...)中复制复制的文本
这是我的简单代码
func shareURL(title: String, url: URL) {
var activityItems = [AnyObject]()
activityItems.append(TitleActivityItemProvider(title: title))
activityItems.append(url as AnyObject)
let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
}
这里是TitleActivityItemProvider 类
class TitleActivityItemProvider: UIActivityItemProvider {
static let activityTypesToIgnore = [UIActivityType.copyToPasteboard]
init(title: String) {
super.init(placeholderItem: title)
}
override var item : Any {
if let activityType = activityType {
if TitleActivityItemProvider.activityTypesToIgnore.contains(activityType) {
return NSNull()
}
}
return placeholderItem! as AnyObject
}
override func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivityType?) -> String {
return placeholderItem as! String
}
}
这是iOS 11 上的错误还是我应该考虑在使用UIActivityViewController 时进行特定更改
==UPDATE==
我注意到,当我评论添加 TitleActivityItemProvider 时它工作正常,当我添加它时,它会复制 url 但是我忽略标题提供程序中的 UIActivityType.copyToPasteboard 并返回 NSNull()
【问题讨论】:
标签: ios swift3 ios11 uiactivityviewcontroller