Skip to content
TOC

事件监听

在特定事件发生时会自动调用事件处理的方法。大多数事件都是摘录有关。

添加/移除事件监听

通常在打开笔记本的时候添加事件监听。 比如当 ProcessNewExcerpt 调用 onProcessNewExcerpt 方法,也就是摘录时触发。

js
NSNotificationCenter.defaultCenter().addObserverSelectorName(
  self,
  "onProcessNewExcerpt:",
  "ProcessNewExcerpt"
)
NSNotificationCenter.defaultCenter().addObserverSelectorName(
  self,
  "onProcessNewExcerpt:",
  "ProcessNewExcerpt"
)

注意这里有一个 :。然后我们创建一个 onProcessNewExcerpt 函数,这个函数要作为插件对象的实例方法。

在关闭笔记本的时候移除事件监听。

js
NSNotificationCenter.defaultCenter().removeObserverName(
  self,
  "ProcessNewExcerpt"
)
NSNotificationCenter.defaultCenter().removeObserverName(
  self,
  "ProcessNewExcerpt"
)

可以导入 事件监听控制器,同时监听多个事件。

ts
import { eventObserverController } from "marginnote"
import { eventObserverController } from "marginnote"

所有事件

事件处理函数可以接收到一个 sender 对象,可以通过 sender.userInfo 得到事件传递来的参数。

AddonBroadcast

打开 marginnote3app://addon/ohmymn?type=card&shortcut=1 这种格式的 URL 时触发。

userInfo.message 就会得到 ohmymn?type=card&shortcut=1

ProcessNewExcerpt

从 PDF 中摘录时触发。

userInfo.noteid 可以得到当前摘录的笔记 id。

ChangeExcerptRange

修改 PDF 中摘录选取的范围时触发。

userInfo.noteid 可以得到当前笔记的 id。

PopupMenuOnNote

点击笔记,弹出菜单时触发。点击 PDF 中的摘录选区以及脑图中的卡片都属于点击笔记,所有都会触发。

userInfo.note 可以得到点击的笔记对象。注意,这里直接是笔记对象。

ClosePopupMenuOnNote

笔记菜单消失时触发。

userInfo.note 可以得到点击的笔记对象。

PopupMenuOnSelection

在 PDF 中框选文字或区域后,弹出菜单时触发。

js
userInfo = {
  arrow,
  documentController,
  winRect
}
userInfo = {
  arrow,
  documentController,
  winRect
}

如果想要得到选中的文字,可以用

userInfo.documentController.selectionText

得到选中的文字。

ClosePopupMenuOnSelection

选中文字的菜单消失时触发,同上。

OCRImageBegin

OCR 开始时触发,包括摘录时自动 OCR 以及手动 OCR。

OCRImageEnd

OCR 结束时触发

Released under the MIT License.