gpt4 book ai didi

ios - 我可以阻止 UIPasteboard 使用 Handoff 从另一台设备复制文本吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:56 25 4
gpt4 key购买 nike

我有一个 iOS 应用程序,它查看粘贴板的内容并尝试(希望)用它做一些智能的事情。 (该应用程序需要 iOS 9.3+,尽管此时我想大多数人都在使用 iOS 11.x。)

问题是我的设备 (iPhone X) 总是从我的 MacBook Pro 复制数据。例如,我可以在我的 MacBook 上选择和复制文本,然后将其放入那里的粘贴板中。然后在我的 iPhone 上,我可以选择并复制诸如我的电子邮件地址之类的文本,然后将其放到那里的粘贴板上。但是当我运行我的应用程序并尝试访问粘贴板时,它需要几秒钟然后使用我的 MacBook 中的文本!

这特别烦人,因为它会在通过网络拉取数据时造成延迟,使我的 UI 无响应。我更愿意让 [UIPasteboard -hasStrings] 方法立即返回。

我知道我可以在添加项目时使用 setItems:options: 选项值为 UIPasteboardOptionLocalOnly,这样这些项目将保留在设备上,不会转移到MacBook。但该选项不会阻止粘贴板自动从 MacBook 中提取数据。

有什么方法可以防止 hasStrings 自动从远程笔记本电脑中提取数据,而无需在设备上完全禁用该功能(即,我不想强​​迫用户在所有应用程序的系统级别)。

最佳答案

使用异步函数检索数据并防止阻塞 UI。像这样:

func getStringFromClipboard(completion: @escaping (_ copiedString: String?) -> Void) {
DispatchQueue.global(qos: .userInitiated).async {
let pastboardString = UIPasteboard.general.string

DispatchQueue.main.async {
completion(pastboardString)
}
}
}

然后:

override func viewWillAppear(_ animated: Bool) {
super.viewWilAppear(animated)
getStringFromClipboard { (copiedString) in
guard let copiedString = copiedString else {
return
}
// your code if clipboard contains string
}
}

关于ios - 我可以阻止 UIPasteboard 使用 Handoff 从另一台设备复制文本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47445567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com