cocoa - NSTextView:复制列表项不包括粘贴时的列表格式
问题描述
我有一个带有股票的基本 Mac 应用程序NSTextView
(Interface Builder 中的“富文档内容文本视图”),但我也在 TextEdit 中观察到了这种行为:
- 创建一个包含 3 个项目的新项目符号列表
- 选择并复制单个列表项
- 将列表项粘贴到同一文档中
→ 粘贴的项目失去了它的列表格式,即当我最后按回车时,不会自动添加新的列表项目。
→ 当我选择两个或更多列表项时,它可以正常工作。
这是一个快速视频:
其他意见
我在 Scrivener 中测试了相同的过程(我相信它也使用 NSTextView),在这里复制单个列表项会将正确的格式列表属性放在剪贴板上。
我检查了剪贴板,当我复制单个列表项时,确实,与 Scrivener 相比,RTF 内容有所不同。
NSTextView(复制一项):
\f0\fs36 \cf0 \'95 Regular list item}
Scrivener(复制一项):
\f0\fs32 \cf0 {\listtext \uc0\u8226 }Regular list item}
请注意 Scrivener 如何在剪贴板上放置正确的格式。
NSTextView(复制了两项):
\f0\fs36 \cf0 {\listtext \uc0\u8226 }Regular list item\
{\listtext \uc0\u8226 }Another list item}
复制两个列表项时,它按预期工作。
我错过了什么?或者这是一个错误/功能,并且 Scrivener 人员正在他们的应用程序中解决这个问题(例如,检测何时复制单个列表项并修复其属性)?
解决方案
这是一个“功能”。
尝试将光标放在开头(而不是行尾)并向下拖动以选择行,复制,粘贴 - 您将在粘贴结束时获得返回,但如果您返回到末尾粘贴行并按回车键,你会发现你得到了列表格式。
“段落”的格式详细信息附加到换行符,当复制文本时,也包括选择开始的格式信息。
TextEdit的源代码可从 Apple 获得,链接版本已有几年历史,并且 Apple 的文档存档,您可能会在 Apple 提供的新“改进”文档中找到更新版本,或者失去理智;-(。如果您阅读您可以了解如何处理文本系统的这些功能/怪癖。
高温高压
推荐阅读
- php - 尝试在 Red Hat 服务器上安装 Xdebug 时出错
- dropdown - 我如何通过搜索进行下拉菜单?
- python - 在权限被覆盖后,端点应该需要一个令牌才能访问,但它不是
- javascript - 为什么 prevProps 总是与 componentDidUpdate 中的当前 props 相同?
- javascript - 仅打印包含传单地图的 div
- javascript - 相对于客户端屏幕移动 dom 元素位置
- java - 如何在 ec2 服务器上为 apache 风暴清理工作人员工件和风暴日志
- regex - 正则表达式选项或匹配
- c# - 使用 Word Interop C# 向 Word 文档添加水印
- java - RecyclerView.setAdapter(适配器); 不适用于 Firestore 分页适配器