作者:王怡君3018 | 来源:互联网 | 2023-01-15 19:02
我正在使用UIActivityViewController
共享webview网址iOS 11
和使用时Copy
然后转到消息应用然后粘贴,它被粘贴两次.
出于好奇,我尝试使用Safari,Chrome,Firefox以及除消息之外的其他应用程序.结果很有趣:
来自Safari的应对程序始终适用于任何应用程序
从Chrome或FireFox处理应用程序在Notes应用程序中工作,但它复制了任何具有TextField(Messages,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
== ==更新
我注意到当我评论添加TitleActivityItemProvider
它工作正常,当我添加它,它复制网址然而我UIActivityType.copyToPasteboard
在标题提供程序中忽略并返回NSNull()