UIActivityViewController在iOS 11上复制项目两次

Mah*_*dam 7 ios uiactivityviewcontroller swift3 ios11

我正在使用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)
}
Run Code Online (Sandbox Code Playgroud)

这是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
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个错误,iOS 11或者我应该考虑在工作时做出具体的改变UIActivityViewController

== ==更新

我注意到当我评论添加TitleActivityItemProvider它工作正常,当我添加它,它复制网址然而我UIActivityType.copyToPasteboard在标题提供程序中忽略并返回NSNull()

小智 0

你在模拟器上测试吗?在模拟器上我遇到了这个问题,但在设备上它只粘贴一次。