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

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

1 Ответ

0 голосов
/ 09 июля 2011

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

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

...