2

나는 흔들어서 되돌리기를 지원하는 CoreData 기반 애플리케이션이 있습니다. 이것은 현재 정상적으로 작동하고 있지만 장치를 흔들면 NSUndoManager가 일반적으로 무료로 제공하는 일반적인 실행 취소 프롬프트를 표시하지 않고 즉시 실행이 취소됩니다.CoreData 앱에서 흔들어서 실행 취소하지만 실행 취소/다시 실행 프롬프트가 표시되지 않음

나는 "취소 아키텍처"문서에서 "아이폰에서 실행 취소 사용"을 읽고 생각했습니다

  • canBecomeFirstResponder을 구현 viewDidAppear
  • 가 제작에 뷰 컨트롤러 becomeFirstResponderYES
  • 를 반환 보기 컨트롤러 resignFirstResponder in viewDidDisappear
  • 보기 컨트롤러에서 self.undoManager을 읽기/쓰기로 재 지정
  • NSUndoManager을 만들고 UIViewControllerinit 방법으로 self.undoManager을 설정합니다 (확인 중입니다).
  • managedObjectModel에 대한 설정자에서 self.managedObjectModel.managedObjectContext.undoManager에서 self.undoManager으로 설정하십시오. 다시 말하지만, 저는 이것이 전화 받기 시작했다는 것을 확인했습니다. 이 작업을 수행하지 않으면 실행 취소가 전혀 작동하지 않습니다.

문제 해결 이미 시도했다 :

  • 검사가 취소 접근 self.undoManager 경우 확인
  • 호출되고
  • canBecomeFirstResponder을 확인 (I 되돌릴 내 managedObjectModel 변경 참조) 실제로 작업에 않습니다 실행 취소 조작 중 호출됩니다 (그렇지 않은 경우).

그래서 제 질문은 다음과 같습니다

  • 어떤 상황에서 작업을 취소하지만, 실행 취소 메시지가 표시되지 않습니다?
  • 다음 문제를 해결하기 위해 무엇을 시도 하시겠습니까?

답변

3

필자는 수동으로 손떨림을 잡아서 undoManager에서 실행 취소를 호출하는 일부 기존 코드를 추적했습니다. viewEnded :의 구현입니다. 이 작업이 제거되면 다시 실행 취소 프롬프트가 나타납니다.