Как мне запретить WebView отключать пункты меню редактирования, вместо того, чтобы передавать их моему контроллеру окон?
В моем NSDocument-based
приложение, окно моего документа просто содержит WebView. Я определил вырезать: копировать: вставить: и удалить: в моем NSWindowController
подкласс, который в остальном функционирует хорошо, но эти пункты меню для меня отключены, если только WebView не сделает что-то текстовое.
Это кажется нарушением правил цепочки респондента, насколько я их понимаю; если вы не можете что-то с этим сделать, вы должны передать это, но кажется, что WebView хочет просто отключить элементы, для которых он определил методы, а не играть в мяч с моим оконным контроллером. Как мне заставить WebView взаимодействовать и предоставлять ответ и проверку пользовательского интерфейса моему контроллеру, когда он не имеет ничего общего с ним?
1 ответ
WebView
разрешено делать то, что ему нравится, с пунктами меню, нет контракта, в котором говорится, что он должен передать ответственность за проверку по цепочке респондента. На самом деле, вполне возможно, что это сломает множество приложений, которые реализуют, например, copy:
метод в их NSWindowController
или же NSDocument
классы и не ожидают иметь дело с необработанными событиями из WebView
,
Вам нужно будет подкласс WebView
и реализовать validateMenuItem:
, Затем вы можете управлять проверкой меню для интересующих вас методов и вызывать super
для тех, кого нет.