2014-05-21 2 views
1

Mac 앱에 실행 취소/다시 실행 기능을 추가하고 싶습니다. 앱은 메모와 함께 작동하며 사용자가 메모를 삭제할 때 '실행 취소'작업을 추가하고 싶습니다.NSUndoManager : 파괴적인 행동을 위해 "재실행"사용 안 함

사용자가 메모를 삭제 한 후에 "메모 삭제 취소"메뉴가 활성화되지만 "메모 삭제 취소"명령을 사용한 후 "메모 삭제 다시 실행"메뉴가 활성화됩니다.

현재 동작을 등록하지 않았기 때문에 "메모 삭제 다시 실행"을 클릭해도 아무런 변화가 없습니다. 사용자가 실행 취소/다시 실행 스택을 통해 실수로 메모를 삭제하지 못하도록하고 싶습니다.

"다시 실행"동작없이 "실행 취소"동작을 추가 할 수 있습니까?

+0

할 수 있다면 잘 모르겠지만 실제로는하고 싶지 않은 내용입니다. * forgiveness *로 알려진 좋은 애플리케이션 디자인 개념이 있습니다. 누군가가 무언가를 삭제하고 마음을 바꾼 다음 삭제를 취소 할 수 없다는 사실을 발견하면 용서할 수 없습니다. 한편, 해당 Undo 액션이없는 이유를 알아야하고 Undo 메뉴 항목 문자열을 사용자 정의하여 약간 혼란스럽지 않게 할 수 있습니다. "복원 메모", 아마도? – trudyscousin

+0

NSUndoManager는 실행 취소 및 다시 실행 스택을 유지 관리합니다. "다시 실행 삭제"를 사용하면 "삭제 취소"가 다시 나타납니다. 따라서 비가역 사고에는 아무런 문제가 없습니다. – mikeD

답변

0

일반적인 경우는 아닙니다. 그렇게하려면 플랫폼 표준의 실행 취소/다시 실행 메커니즘에 대한 암묵적인 계약을 위반해야합니다. 등록한 것들이 대칭이되기를 원합니다. 사용자가 메모를 삭제하면 사용 가능한 실행 취소 작업에서 메모를 다시 가져와야합니다. 사용자가 실행 취소를 선택하면 재실행 조치는 "메모 삭제"입니다. 사용자가 실행 취소 또는 다시 실행으로 인해 실수로 삭제 한 메모는 반대 동작을 수행하여 항상 되돌릴 수 있어야하므로 중요하지 않습니다.

이것을 생각해 보지 마십시오.