2013-02-26 6 views
1

У меня есть вид, который обрабатывает отмену и повтор. Для определенного состояния я меняю первого ответчика с точки зрения на окно вида. Теперь в этом состоянии я ожидаю, что метод validateMenuItem: в делегате окна проверяет пункт меню отмены.Какой ответчик улавливает действие отмены?

Это работает, когда я закрываю окно. Но когда окно видно, некоторые другие ответчики имеют дело с действием отмены.

Мое предположение, что это оконный контроллер? Но поскольку это приложение, основанное на документах, я не реализовал его вручную. Должен ли я создать пользовательский оконный контроллер? И если да, то какой самый простой способ сделать это?

ответ

2

Найден ответ здесь: http://www.cocoabuilder.com/archive/cocoa/307917-validatemenuitem-not-called-for-undo-menu-item.html

Настройка пункта меню Undo с действием «Отмена:» рассказывает рамки, что это пункт меню отменить, поэтому он становится одним элементом стандарта отменить механизм пользовательского интерфейса, реализованный в NSWindow. Под эти обстоятельства, пункт меню (и особенно его валидация) не принадлежит вам.

Если вы хотите самостоятельно реализовать весь механизм, то вы должны использовать настраиваемое действие, такое как «myUndo:» для пункта меню «Отменить». Это означает, что, насколько известно базам, у приложения нет (стандарт) отмена, а действие/валидация должны работать в обычном порядке .