我有几个 WebView 可以在视图层次结构中进出。其中一些 WebView 包含表单字段,因此我实现了 editingDelegate 来为我的文档提供 NSUndoManager。
问题是在 WebView 中完成的任何输入都会生成放置在撤消堆栈上的操作。从层次结构中删除视图后,操作仍在撤消堆栈中。此时,如果用户使用 Cmd-Z 来“撤消键入”,则会引发异常,因为 -undoEditing: 正在发送到 WebEditorUndoTarget 的已释放实例。(WebKit 实现中使用的私有类。)
我不能使用 -removeAllActionsWithTarget: 因为我不能引用目标。看来唯一的解决方案是禁用 WebView 的撤消注册。
我错过了什么还是这是 WebView 的限制?