2012-12-04 4 views
0

operation1operation2 두 개의 원자 단위 메서드가 있고 자신의 실행 취소 동작을 undoManager에 등록한다고 가정합니다. 벌크를 operation3으로 만들면 이전 두 작업 및 그룹을 beginUndoGrouping/endUndoGrouping으로 실행 취소 콜백을 호출합니다. 실행 취소하면 NSUndoManager은 다시 실행 작업을 그룹화하지 않습니다. NSUndoManager지도를 실행 취소 그룹을 다시 실행 그룹으로 만드는 방법은 무엇입니까?NSUndoManager가있는 중첩 된 다시 실행 그룹

샘플 코드 :

- (void)operation3 
{ 
    [undoManager beginUndoGrouping]; 
    [self operation1]; // [undoManager setActionName:@"op1"]; 
    [self operation2]; // [undoManager setActionName:@"op2"]; 
    [undoManager endUndoGrouping]; 
    [undoManager setActionName:@"op3"]; 
    // call operation3 -> "Edit - Undo op3" -- OK 
    // press Command+Z -> "Edit - Redo op1" -- not OK 
} 

답변

0

당신은 실행 취소시 다시 작업 이름을 설정해야합니다. 실행 취소 중에 "op1"만 설정했다고 생각합니다.

+0

복합 메소드에서 실행 취소 가능 액션을 결합하려는 의도가 잘못되었다고 생각합니다. '실행 취소/다시 실행'복합 액션을 올바른 순서로 스택 화하기 위해 많은 상용구 코드를 작성했습니다. – UncleAli

관련 문제