html - Swift - MacOS NSPasteboard - 同时支持 HTML 和纯字符串
问题描述
我有一个用例,我希望我的应用程序存储剪贴板数据,然后允许用户将其粘贴出来。
问题是 - 我想既支持 HTML 样式的文本(同时保持其样式),也支持简单的纯文本。
到目前为止,我所拥有的是:
- 粘贴板变量设置
let pasteboard = NSPasteboard.general
pasteboard.declareTypes([.html, .string], owner: nil)
- 存储用户的剪贴板数据
let copiedString = pasteboard.string(forType: .html) ?? pasteboard.string(forType: .string) {
- 例如,如果用户从浏览器复制文本,则此方法会维护整个 HTML。
或者,如果从不支持 HTML 的应用程序(例如 XCode、Notes 等)复制文本,`copiedString` 将简单地保存纯文本。
- 后来下线 - 将内容推回剪贴板
pasteboard.setString(copiedString, forType: .html)
我的问题是,当我尝试将推送到剪贴板的内容粘贴时;它仅适用于实际支持 HTML 格式文本的应用程序,例如 Chrome / Microsoft Word。
例如,当我尝试将内容粘贴到 XCode 中时,它根本不会吐出任何内容。
理想情况下,我希望我的剪贴板根据我正在使用的应用程序进行自我调整 - 如果应用程序支持,则将文本粘贴为 HTML,否则 - 粘贴纯文本。
我怎样才能实现这种行为?
谢谢!
解决方案
推荐阅读
- angular - 我应该使用异步方法使用离子电容器访问本地存储吗?
- spring-boot - @PropertySource 没有选择正确的属性文件
- python - selenium.common.exceptions.TimeoutException 在使用 Selenium Python 中的 expected_conditions presence_of_element_located 单击按钮时
- laravel - 将文件上传到 S3 时 Laravel 白屏(413 错误)
- java - ACTION_MANAGE_UNKNOWN_APP_SOURCES:startActivityForResult() 还是 startActivity()?
- node.js - 错误:在开发环境中找不到模块 './abc/xyz.js
- .net-core - Ocelot、Identity、IdentityServer4 和 API Resource,如何基于角色授予访问权限
- arrays - 从单词列表和哈希中读取的有效方法?
- javascript - chart.js onClick事件函数,访问angular组件
- c++ - 为什么我的孩子列表没有与该项目一起添加到场景中?