Отображение контекстного меню

Набор Приложения интерпретирует события «правильная мышь вниз», и события «снизили мышь», измененную Клавишей CTRL как команды для отображения контекстного меню для представления, по которому щелкают. Ваши подклассы представления имеют несколько альтернативных подходов для отображения контекстного меню:

После завершения любой из этих процедур Набор Приложения выводит на экран контекстное меню каждый раз, когда пользовательские лево-щелчки управления или щелкают правой кнопкой по представлению. Обратите внимание на то, что Набор Приложения автоматически также проверяет пункты меню контекстных меню, если Вы не запрашиваете его не к.

Если необходимо настроить контекстное меню, можно сделать так путем установки надлежащего объекта как делегат меню и реализации menuWillOpen: метод для настройки меню, поскольку Вы считаете целесообразным непосредственно перед тем, как это появляется.

Если Вы хотите, чтобы Ваше представление вывело на экран контекстное меню в ответ на события кроме щелчков правой кнопкой мыши и щелчков лево-Управления мыши, можно непосредственно обработать сообщение о событии в надлежащем NSResponder метод. Например, если бы Вы хотите, чтобы пользователи были в состоянии щелкнуть левой кнопкой по представлению изображения для получения меню опций экспорта, Вы переопределили бы mouseDown: метод. В Вашей реализации метода создайте меню и затем вызовите NSMenu метод класса popUpContextMenu:withEvent:forView:, передача в конечном счете возражает связанный с событием mouseDown и представлением, владеющим контекстным меню. Перечисление 1 иллюстрирует этот подход.

Перечисление 1  , Выводящее на экран контекстное меню после получения лево-события от нажатия мыши

- (void)mouseDown:(NSEvent *)theEvent {
 
    NSMenu *theMenu = [[NSMenu alloc] initWithTitle:@"Contextual Menu"];
    [theMenu insertItemWithTitle:@"Beep" action:@selector(beep:) keyEquivalent:@"" atIndex:0];
    [theMenu insertItemWithTitle:@"Honk" action:@selector(honk:) keyEquivalent:@"" atIndex:1];
 
    [NSMenu popUpContextMenu:theMenu withEvent:theEvent forView:self];
}

Контекстные меню, включая любое меню Вы раскрываетесь с popUpContextMenu:withEvent:forView:, автоматически вставьте пункты меню от любых плагинов контекстного меню, которые пользователь установил в меню. Плагин контекстного меню, который является CFPlugIn пакет установлен в a Library/Contextual Menu Items каталог на надлежащем уровне системы, позволяет приложениям и другим формам программного обеспечения расширить список команд, найденных в контекстных меню, таких как Средство поиска. Приложения не должны работать за их элементами для появления. При попытке программно вывести на экран меню, Вы не могли бы хотеть, чтобы появились те элементы. Предпочтительный подход для того, чтобы программно вывести на экран неконтекстное меню должен создать NSPopUpButtonCell объект, набор, который затем вызывает его меню, и отправляет a attachPopUpWithFrame:inView: обменивайтесь сообщениями к ячейке кнопки всплывающего меню.