我有幾個WebViews可以進出我的視圖層次結構。其中一些WebViews包含表單域,所以我實現了editDelegate爲我的文檔提供NSUndoManager。刪除WebView的NSUndoManager的撤銷操作
問題是,在WebView中完成的任何打字都會生成放置在撤消堆棧上的操作。從層次結構中刪除視圖後,這些操作仍處於撤消堆棧中。此時,如果用戶使用Cmd-Z來「撤消鍵入」,則會拋出異常,因爲正在將-undoEditing:發送到WebEditorUndoTarget的釋放實例。 (WebKit實現中使用的私有類)
我無法使用-removeAllActionsWithTarget:因爲我無法引用目標。看起來唯一的解決方案是禁用WebView撤銷註冊。
我錯過了什麼,或者這是WebView的限制嗎?
它看起來像發送WebView一個close信息導致_clearUndoRedoOperations被調用。我在異常回溯中看到了-_close前面的_clearUndoRedoOperations,它看起來像公共方法做同樣的事情。 – chockenberry
很高興知道。謝謝! –