2014-05-21 29 views
1

我想爲我的Mac應用程序添加撤銷/重做功能。該應用程序與筆記一起工作,我想爲用戶刪除筆記時添加一個「撤消」操作。NSUndoManager:禁用「重做」以進行破壞性操作

這很好,在用戶刪除一個音符後,「撤消刪除音符」菜單變爲活動狀態,但在使用「撤消刪除音符」命令後,有一個「重做刪除音符」菜單變爲活動狀態。

目前沒有任何反應,當我點擊「恢復刪除注意事項」,因爲我沒有註冊的動作。我不希望用戶能夠通過撤銷/重做堆棧意外刪除一個筆記。

是否可以在沒有「重做」操作的情況下添加「撤消」操作?

+0

我不知道你是否可以,但我知道這是你真的不想做的事情。良好的應用程序設計中有一個概念稱爲*寬恕*。當某人刪除某些東西,改變他們的想法,然後發現他們沒有能力撤銷刪除時,這並不是很寬容。同時,您需要弄清楚爲什麼沒有相應的撤消操作,並且您可能會自定義您的撤消菜單項字符串,所以它不那麼令人困惑。 「還原注意」,也許? – trudyscousin

+0

NSUndoManager將維護撤銷和重做堆棧。當您使用「重做刪除」時,「撤消刪除」將會重新出現。所以不可逆事故不存在問題。 – mikeD

回答

0

不是常見的情況。這樣做會違反平臺標準撤消/重做機制的隱式合約。你希望你註冊的東西是對稱的。如果用戶刪除了一條筆記,則可用的撤銷操作應該將筆記帶回。如果用戶選擇撤消,則重做操作將是「再次刪除該筆記」。不管用戶是否意外地通過撤消或重做刪除了一個音符,因爲他們應該始終能夠通過執行相反的操作來恢復它,對吧?

不要過時這一點。

相關問題