我正在使用UIActivityViewController
在iOS 11
上分享网页浏览网址,在使用Copy
时,请转到消息应用然后粘贴,然后粘贴两次。
出于好奇,我尝试使用Safari,Chrome,Firefox以及除邮件之外的其他应用程序。结果很有趣:
这是我的简单代码
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
时,它工作正常,当我添加它时,它会复制网址,但我会忽略标题提供程序中的UIActivityType.copyToPasteboard
并返回NSNull()
答案 0 :(得分:1)
所以我在将项目添加到url.absoluteString
activityItems
修复了此问题
activityItems.append(url.absoluteString as AnyObject)
答案 1 :(得分:0)
您是否在模拟器上进行测试?在模拟器上我有这个问题,但在设备上它只粘贴一次。