Skip to content

创建自定义工具

事件处理机制

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 事件响应流程:

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 参考

IToolHandlerIAnnotHandler 的完整接口说明请参阅 API 手册