借助写作工具,用户可以直接在你的 app 内进行文本校对、改写和转换。了解为你的 app 自定写作工具的高级技巧。探索众多格式选项,以及如何在富文本编辑中加以利用。如果你使用自定文本引擎,欢迎了解如何无缝整合完整的写作工具体验,以便用户直接在文本视图中进行修改。
此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com
深入探索写作工具:从原生集成到自定义文本引擎的高级应用
引言
在WWDC 2024的”深入探索写作工具”课程中,Apple详细介绍了写作工具的高级集成方案。作为文本输入和国际化研发专家,董源系统性地展示了写作工具的最新功能、原生文本视图定制技巧、富文本格式支持方案,以及针对完全自定义文本引擎的完整集成方案。这些技术将帮助开发者在其应用中实现更智能的文本处理能力。
新功能概览
写作工具的最新迭代带来了多项重要更新。首先是通过ChatGPT集成实现的指令式内容生成功能,用户现在可以使用简单指令创建各类文本内容甚至生成图像。这套工具已全面支持visionOS平台,覆盖邮件、备忘录及第三方应用等多种场景。
iOS/iPadOS/macOS 26版本中新增的”后续调整”功能尤为亮眼,它允许用户在完成初始文本改写后追加风格要求,如”更温暖”、”更口语化”或”更鼓舞人心”等。写作工具现已无缝集成快捷指令功能,借助Apple Intelligence实现自动化的校对、改写和摘要流程。
在API层面,开发者现在可以获取标准工具栏按钮、支持富文本的表达意图返回,以及全新的协调器API。特别是专为自定义文本引擎设计的协调器API,为高级集成提供了强大支持。
原生文本视图的深度定制
对于采用系统原生文本视图的开发者,写作工具提供了开箱即用的支持。通过精心设计的生命周期方法,应用可以响应写作工具的各种操作,如同步暂停事件。开发者可以灵活配置功能范围,设置禁止改写的文本区间,或使用重命名后的”Writing Tools Result Options”管理富文本、列表和表格支持。
尽管文本选中时会自动启用写作工具,但对于文字密集型应用(如备忘录和邮件),建议主动添加工具栏按钮以提升用户体验。UIKit中使用UIBarButtonItem,AppKit则使用NSToolbarItem。系统会自动在上下文菜单中插入写作工具项,若需自定义菜单布局,可将automaticallyInsertsWritingToolsItems设为false,并通过writingToolsItems API获取标准菜单项。
富文本格式的高级处理方案
现实应用中的文本视图类型多样,从Finder搜索框等纯文本视图,到TextEdit等支持基础富文本的视图,再到备忘录等支持语义化样式(标题、副标题、引用块等)的高级视图。写作工具通过结果选项声明文本视图的处理能力:
- 纯文本视图使用.plainText选项
- 基础富文本视图使用.richText选项(可选配.list和.table)
- 支持语义化格式的应用需使用新增的.presentationIntent选项
值得注意的是,即使在表达意图模式下,写作工具仍可能添加某些显示属性(如删除线),因为部分样式无法通过意图完全表达。开发者应重写textView的requestContexts方法,尽可能提供含表达意图的上下文以增强语义理解。
自定义文本引擎的完整集成方案
对于采用完全自定义文本引擎的应用,Apple提供了完整的写作工具集成路径。基础支持只需实现通用文本编辑协议,而通过新增的WritingToolsCoordinator API可获得原地改写、动画效果和行内校对标记等高级功能。
具体实施分为几个关键步骤:首先在DocumentView中添加会话所需属性,然后初始化NSWritingToolsCoordinator并设置委托关联视图。核心委托方法包括文本上下文提供、替换操作处理、动画预览生成以及校对标记边界返回等。
UIKit中通过UIInteraction机制附加协调器:1
2
3
4
5func configureWritingTools() {
guard UIWritingToolsCoordinator.isWritingToolsAvailable else { return }
let coordinator = UIWritingToolsCoordinator(delegate: self)
addInteraction(coordinator)
}
AppKit中则作为视图属性配置:1
2
3
4
5
6
7func configureWritingTools() {
guard NSWritingToolsCoordinator.isWritingToolsAvailable else { return }
let coordinator = NSWritingToolsCoordinator(delegate: self)
coordinator.preferredBehavior = .complete
coordinator.preferredResultOptions = [.richText, .list]
writingToolsCoordinator = coordinator
}
开发者需特别注意外部文本变更时的同步处理,主动调用协调器的updateRange:withText方法保持状态一致,布局变化时则调用updateForReflowedText请求新预览。
结语与行动建议
写作工具的强大功能为应用文本处理带来了质的飞跃。开发者应当立即体验Vision Pro的写作工具、快捷指令集成和改写后调整功能。对于文字密集型应用,建议添加专用工具栏按钮;支持富文本的应用应尝试格式选项实现语义样式;而拥有自定义文本引擎的应用则可通过协调器API获得完整功能。
Apple已发布包含TextKit 2示例的演示项目,结合《写作工具入门》课程和官方文档,开发者可以快速掌握这些高级集成技术,为用户提供更智能、更流畅的文本编辑体验。