2010-03-21 26 views
0

我有一個文本視圖,它從保存在模型對象中的屬性字符串中獲取其內容。我在抽屜中列出了幾個這些模型對象,當用戶點擊其中一個時,文本視圖交換其內容。文本視圖的多個撤消管理器

我現在還需要交換撤消管理文本視圖。我在我的模型對象上初始化一個撤銷管理器,並使用undoManagerForTextView將它返回到文本視圖,但有些事情不太正確。

戰略地位日誌報表顯示我一切的工作按計劃進行:在啓動一個新的模型對象已正確初始化和一個非空撤消管理總是由文本視圖拉動。但是當談到真正做撤銷時,我無法得到我想要的行爲。

我打開一個窗口,輸入一些東西,然後按CMD + Z,並撤消作品。 我打開一個窗口,輸入內容,在表格上選擇一個新模型,鍵入內容,回到第一個模型並嘗試撤消,我得到的只是一個嘟嘟聲。

的文件上Something讓我提出一個眉毛,因爲這意味着我不能有幾個模型對象撤消:

默認的撤消和重做行爲 適用於文本字段和文本只要 細胞作爲字段或細胞是 第一響應者(即,鍵盤操作的 焦點)。一旦 插入點離開字段或 單元格,以前的操作不能被 撤消。

回答

2

你可能想繼承NSUndoManager和覆蓋removeAllActionsWithTarget:removeAllActions,至少要記錄他們,可能是爲了讓他們無操作。

不要忘記實例子類,而不是原來的NSUndoManager的。 (很容易忘記,有些讀者可能沒有意識到,他們需要做到這一點。)

+0

我想我會去與核心數據。如果我將模型對象轉換爲託管實體,我將免費獲得撤銷。 – ruipacheco 2010-03-22 00:12:08

+0

您的方法似乎工作得很好,無需將核心數據添加到應用程序。謝謝! – ruipacheco 2010-03-25 12:17:22