我有几个WebViews可以进出我的视图层次结构。其中一些WebViews包含表单域,所以我实现了editDelegate为我的文档提供NSUndoManager。删除WebView的NSUndoManager的撤销操作
问题是,在WebView中完成的任何打字都会生成放置在撤消堆栈上的操作。从层次结构中删除视图后,这些操作仍处于撤消堆栈中。此时,如果用户使用Cmd-Z来“撤消键入”,则会抛出异常,因为正在将-undoEditing:发送到WebEditorUndoTarget的释放实例。 (WebKit实现中使用的私有类)
我无法使用-removeAllActionsWithTarget:因为我无法引用目标。看起来唯一的解决方案是禁用WebView撤销注册。
我错过了什么,或者这是WebView的限制吗?
它看起来像发送WebView一个close信息导致_clearUndoRedoOperations被调用。我在异常回溯中看到了-_close前面的_clearUndoRedoOperations,它看起来像公共方法做同样的事情。 – chockenberry
很高兴知道。谢谢! –