UIPasteboard - 将复制的文本设置为过期

时间:2017-12-29 16:19:50

标签: ios swift uipasteboard

我有一个字符串,我想放入UIPasteboard,它应该在2分钟后过期

UIPasteboard.general.setObjects(objects: [NSItemProviderWriting],
    localOnly: true, 
    expirationDate: Date().addingTimeInterval(120))

objects键的值应该是多少?

2 个答案:

答案 0 :(得分:1)

您应该在一个控制器类中实现接口NSItemProviderWriting及其所需的方法。

一个非常简单的实现看起来像yourString包含要粘贴的字符串:

static var writableTypeIdentifiersForItemProvider: [String] {
    return [ kUTTypeUTF8PlainText as String ]
}

func loadData(withTypeIdentifier typeIdentifier: String, forItemProviderCompletionHandler completionHandler: @escaping (Data?, Error?) -> Void) -> Progress? {
    completionHandler(yourString.data(using: .utf8), nil)
    return nil
}

您应添加import MobileCoreServices以导入kUTTypeUTF8PlainText的定义。

通常,对于此实现,您可以使用控制器在上面的示例代码中进行调用。然后,您应该将其用作数组中的值:

UIPasteboard.general.setObjects(objects: [ self ],
    localOnly: true, 
    expirationDate: Date(timeIntervalSinceNow: 120))

答案 1 :(得分:1)

您可以UIPasteboard.general.setItems

        let expireDate = Date().addingTimeInterval(TimeInterval(120))
        
        UIPasteboard.general.setItems([[UIPasteboard.typeAutomatic: value]],
                options: [UIPasteboard.OptionsKey.expirationDate: expireDate])