뷰 계층을 바꿔서 여러 개의 WebView를 가지고 있습니다. 이러한 WebView 중 일부는 양식 필드를 포함하므로 editDelegate를 구현하여 내 문서의 NSUndoManager를 제공합니다.WebView의 NSUndoManager에 대한 실행 취소 작업 제거
WebView에서 입력을 수행하면 실행 취소 스택에있는 작업이 생성된다는 점이 문제입니다. 뷰가 계층 구조에서 제거 된 후에도 작업은 실행 취소 스택에 남아 있습니다. 이 시점에서 사용자가 Cmd-Z를 사용하여 "입력 취소"를하면 -undoEditing :이 (가) 할당 취소 된 WebEditorUndoTarget 인스턴스로 전송되므로 예외가 발생합니다. (WebKit 구현에 사용되는 개인 클래스)
대상을 참조 할 수 없어서 -removeAllActionsWithTarget :을 사용할 수 없습니다. 유일한 해결책은 WebView에 대한 등록 취소를 비활성화하는 것입니다.
내가 누락되었거나 WebView의 제한 사항입니까?
WebView에 -close 메시지를 보내면 _clearUndoRedoOperations가 호출됩니다. 예외 역 추적 (backtrace)에서 _clearUndoRedoOperations 앞에 -_close가있는 것을 보았습니다. public 메소드가 똑같은 일을하는 것처럼 보입니다. – chockenberry
잘 알고 있습니다. 감사! –