
Gutenberg 支持实战AztecEditor-iOS 处理古腾堡区块的终极方案【免费下载链接】AztecEditor-iOSA reusable native iOS visual HTML text editor component.项目地址: https://gitcode.com/gh_mirrors/az/AztecEditor-iOS关键词AztecEditor-iOS、Gutenberg 支持、古腾堡区块、iOS 富文本编辑器、WordPress 编辑器1. 为什么原生 iOS 编辑器处理不了古腾堡区块如果你开发过 WordPress 相关的 iOS App一定遇到过这样的痛点古腾堡Gutenberg编辑器生成的文章内容里面充满了!-- wp:paragraph --这样的 HTML 注释标记普通的UITextView或WKWebView拿到这些内容后要么原样显示注释文本要么直接把区块内容打乱。这是因为古腾堡区块本质上是一套基于 HTML 注释的自定义协议传统的富文本编辑组件根本不认识它。而AztecEditor-iOS作为一款可复用的原生 iOS 可视化 HTML 文本编辑器组件专门针对这个问题给出了完整的解决方案——通过WordPressEditor库提供一套完整的Gutenberg 支持插件。本文将带你深入理解 AztecEditor-iOS 处理古腾堡区块的完整流程从输入解析到输出还原让你在自己的项目中也能轻松落地这套方案。2. 核心架构插件化设计的优势AztecEditor-iOS 采用插件化架构核心库Aztec负责 HTML 与NSAttributedString的互转和可视化编辑而 WordPress 相关的所有能力包括 Gutenberg 支持都封装在WordPressEditor库中通过Plugin机制挂载到编辑器上。关键入口在 WordPressPlugin.swift通过content.contains(!-- wp:)检测内容是否为古腾堡格式自动为内容挂载WordPressInputCustomizer和WordPressOutputCustomizer设置专属的粘贴板代理处理从网页粘贴的古腾堡内容这种设计的好处是不需要 Gutenberg 支持的应用可以只用轻量的 Aztec 核心库而需要完整 WordPress 编辑体验的应用则一键接入 WordPressEditor互不干扰。3. 输入解析把注释变成真正的区块 当文章内容加载进编辑器时AztecEditor-iOS 会先由 HTMLParser 解析成 DOM 树然后交给GutenbergInputHTMLTreeProcessor处理。这个处理器是整个 Gutenberg 支持的核心引擎对应源码GutenbergInputHTMLTreeProcessor.swift。它的工作原理分为三步识别注释通过 CommentNodeGutenberg.swift 中定义的规则识别三种注释类型——区块开启标记!-- wp:xxx --、区块关闭标记!-- /wp:xxx --、自闭合区块!-- wp:xxx /--。配对包裹找到开标记后向后搜索对应的闭标记把中间的所有节点包装成一个新的gutenblock元素并记录下开闭注释的原始内容。注册元素把gutenblock注册为块级元素使其在编辑器中作为不可拆分的整体进行排版和换行处理。这样一来!-- wp:paragraph --到!-- /wp:paragraph --之间的内容在编辑器内部就被表示为一个带有Gutenblock段落属性的富文本区块可以正常编辑、格式化而不会破坏区块边界。4. 输出还原编辑完还能原样写回 编辑完成后编辑器需要把富文本重新序列化为 HTML。此时轮到GutenbergOutputHTMLTreeProcessor登场对应源码GutenbergOutputHTMLTreeProcessor.swift。它做的事情与输入过程正好相反遇到gutenblock元素时从保存的属性中解码出原始的开启/关闭注释还原出!-- wp:xxx --开标记 区块内部内容 !-- /wp:xxx --闭标记 换行符针对序列化器会把自闭合区块误包进p标签的边界情况做了专门的剥离处理这保证了用户在 App 里编辑过的内容保存后依然能被 WordPress 网站完美识别不会丢失区块结构。5. 自闭合区块Gutenpack 的巧妙处理 古腾堡里还有一类特殊的区块——自闭合区块比如!-- wp:image /--、!-- wp:spacer /--它们没有内部内容只有自身的配置属性。AztecEditor-iOS 通过GutenpackConverter和GutenpackAttachment处理这类区块对应源码GutenpackConverter.swiftGutenpackAttachment.swift处理策略很优雅自闭合区块在输入时被解析为gutenpack元素随后转换为一个GutenpackAttachment文本附件在编辑器中以占位卡片的形式展示就像图片附件一样用户可以看到区块存在但不需要编辑其内部。保存时再根据记录的blockName和blockContent还原成原始注释。配合 GutenpackAttachmentRenderer.swift 和 GutenbergAttributeEncoder.swift整套编解码链路完整闭环。6. 快速集成三步启用 Gutenberg 支持 要在你自己的 iOS 项目中启用完整的 Gutenberg 支持非常简单引入依赖通过 CocoaPods 或 Swift Package Manager 引入WordPress-Editor-iOS它内部依赖核心库 Aztec。创建插件并挂载创建WordPressPlugin实例并注册到TextView上。享受编辑体验从此之后TextView自动识别、编辑并输出古腾堡内容图片、视频、段落、引用等区块都能正常工作。如果你想深入调试或扩展还可以参考GutenbergAttributeDecoder.swift — 属性解码Gutenblock.swift — 区块段落属性定义测试用例 GutenbergInputHTMLTreeProcessorTests.swift 和 GutenbergOutputHTMLTreeProcessorTests.swift是理解全流程的最佳学习素材7. 总结 AztecEditor-iOS 之所以能成为处理古腾堡区块的终极方案核心在于它把 Gutenberg 支持做成了标准化的双向处理器阶段处理组件核心职责输入GutenbergInputHTMLTreeProcessor注释 → 区块元素输出GutenbergOutputHTMLTreeProcessor区块元素 → 注释自闭合GutenpackConverterGutenpackAttachment注释 ↔ 占位附件检测WordPressPlugin自动识别古腾堡内容这套方案既保证了原生编辑体验复用系统 UITextView 的能力又做到了与 WordPress 生态无缝兼容。如果你正在为 iOS 端 WordPress 编辑器集成古腾堡区块支持而头疼AztecEditor-iOS 就是你想要的开箱即用方案。【免费下载链接】AztecEditor-iOSA reusable native iOS visual HTML text editor component.项目地址: https://gitcode.com/gh_mirrors/az/AztecEditor-iOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考