Как мне запретить WebView отключать пункты меню редактирования, вместо того, чтобы передавать их моему контроллеру окон?

В моем NSDocument-based приложение, окно моего документа просто содержит WebView. Я определил вырезать: копировать: вставить: и удалить: в моем NSWindowController подкласс, который в остальном функционирует хорошо, но эти пункты меню для меня отключены, если только WebView не сделает что-то текстовое.

Это кажется нарушением правил цепочки респондента, насколько я их понимаю; если вы не можете что-то с этим сделать, вы должны передать это, но кажется, что WebView хочет просто отключить элементы, для которых он определил методы, а не играть в мяч с моим оконным контроллером. Как мне заставить WebView взаимодействовать и предоставлять ответ и проверку пользовательского интерфейса моему контроллеру, когда он не имеет ничего общего с ним?

1 ответ

Решение

WebView разрешено делать то, что ему нравится, с пунктами меню, нет контракта, в котором говорится, что он должен передать ответственность за проверку по цепочке респондента. На самом деле, вполне возможно, что это сломает множество приложений, которые реализуют, например, copy: метод в их NSWindowController или же NSDocument классы и не ожидают иметь дело с необработанными событиями из WebView,

Вам нужно будет подкласс WebView и реализовать validateMenuItem:, Затем вы можете управлять проверкой меню для интересующих вас методов и вызывать super для тех, кого нет.

Другие вопросы по тегам