UIPasteboard - 设置复制的文本过期时间

5

我有一个字符串,想要将其放入UIPasteboard,并且它应该在2分钟后过期。

UIPasteboard.general.setObjects(objects: [NSItemProviderWriting],
    localOnly: true, 
    expirationDate: Date().addingTimeInterval(120))
对象键(objects)的值应该是什么?
2个回答

2

you can you UIPasteboard.general.setItems

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

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)Swift似乎不知道kUTTypeUTF8PlainText,2)loadData中的yourString是从哪里来的?这是假定我在我的VC上将字符串分配给本地变量吗? - Zack Shapiro
UTI类型在框架MobileCoreServices中定义。变量yourString只是一个文本占位符,您应根据需要进行定义。 - clemens
1
感谢您的帮助。 - Zack Shapiro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接