创建自定义工具
事件处理机制
Tool Handler 和 Annotation Handler 处理来自 FSPDFViewCtrl 的触屏、手势等事件。事件触发时,FSPDFViewCtrl 将事件传递给 UIExtensionsManager:
- Tool Handler 响应: 若存在当前 Tool Handler,UIExtensionsManager 将事件传递给它,事件处理结束。
- Annotation Handler 响应: 若存在选中的 Annotation,UIExtensionsManager 将事件传递给其对应的 Annotation Handler,事件处理结束。
- Selection Tool Handler 响应: 若不存在 Tool Handler 和选中的 Annotation,UIExtensionsManager 将事件传递给 Selection Tool Handler。
- Text Selection Tool: 处理文本选择事件(如添加高亮注释)。
- Blank Selection Tool: 处理空白区域事件(如添加笔记注释)。
说明
- Tool Handler 和 Annotation Handler 不会同时响应事件。
- Tool Handler 主要用于创建注释(暂不支持 Link Annotation)、创建签名和文本选择。
- Annotation Handler 主要用于编辑注释和填写表单。
Tool Handler 和 Annotation Handler 事件响应流程:

IToolHandler 协议
福昕 PDF SDK iOS 版提供了 IToolHandler 协议,开发者可以实现该协议来创建自定义工具(如截图标注、自定义测量工具等),并将其注册到 UIExtensionsManager 中。
每个自定义工具都需要实现 IToolHandler 协议,该协议定义了工具的生命周期和交互事件:
| 方法 | 说明 |
|---|---|
getName | 返回工具名称 |
isEnabled | 工具是否可用 |
onActivate | 工具被激活时调用 |
onDeactivate | 工具被停用时调用 |
onPageViewTap:recognizer: | 处理页面上的点击事件 |
onPageViewLongPress:recognizer: | 处理页面上的长按事件 |
onPageViewPan:recognizer: | 处理页面上的拖拽事件 |
示例:注册自定义工具
objc
// 注册自定义工具
[extensionsManager registerToolHandler:myCustomTool];
// 激活自定义工具
extensionsManager.currentToolHandler = myCustomTool;
// 取消注册
[extensionsManager unregisterToolHandler:myCustomTool];
自定义注释处理器
类似地,通过实现 IAnnotHandler 协议,可以自定义注释的点击、选中、绘制等行为:
objc
// 注册自定义注释处理器
[extensionsManager registerAnnotHandler:myAnnotHandler];
// 取消注册
[extensionsManager unregisterAnnotHandler:myAnnotHandler];
API 参考
IToolHandler、IAnnotHandler 的完整接口说明请参阅 API 手册。