Как работают меню
Классы NSMenu
и NSMenuItem
основание для всех типов меню. Экземпляр NSMenu
управляет набором пунктов меню и рисует их один ниже другого. Экземпляр NSMenuItem
представляет пункт меню; это инкапсулирует всю информацию NSMenu
возразите должен нарисовать и управлять им, но не делает никакого получения или самой обработки событий. Обычно Вы используете Интерфейсного Разработчика, чтобы создать и изменить любой тип меню. Однако NSMenu
и NSMenuItem
предоставьте Вам методы для изменения меню приложения динамично.
Основы меню
Какао дает Вам базовый набор классов, обрабатывающих меню независимо от того, где они появляются. Меню обычно появляются в различных частях пользовательского интерфейса:
Строка меню приложения. Это наверху экрана.
Всплывающее меню. Это может появиться где угодно в окне.
Строка состояния. Это начинается в правой стороне строки меню (налево от Отдельно оплачиваемых предметов Меню и часов строки меню) и растет налево, поскольку элементы добавляются к нему.
Контекстные меню. Когда пользователь щелкает правой кнопкой или лево-щелчки управления элемент, они появляются.
Меню Dock. Меню для каждого значка панелей появляется, когда пользователь щелкает правой кнопкой или лево-щелчки управления значок, или когда пользователь лево-нажимает указатель мыши на значке.
Классы NSMenu
и NSMenuItem
основание для всех типов меню. Экземпляр NSMenu
управляет набором пунктов меню и рисует их один ниже другого. Экземпляр NSMenuItem
представляет пункт меню; это инкапсулирует всю информацию NSMenu
возразите должен нарисовать и управлять им, но не делает никакого получения или самой обработки событий.
Представления меню способны к присоединению того представление меню в любой момент времени. Присоединенное представление меню выводит на экран содержание подменю и обычно располагается рядом с пунктом меню, с которым оно связано.
NSMenuItem
позволяет Вам установить заголовки, действия, цели, теги, изображения, включили состояния и подобные атрибуты отдельных пунктов меню, а также получить текущую стоимость этих атрибутов. Каждый раз, когда атрибут для пункта меню изменяется, он уведомляет свое связанное NSMenu
с itemChanged:
метод.
Вы обычно используете Интерфейсного Разработчика, чтобы создать и изменить любой тип меню, так часто нет никакой потребности записать любой код. Однако NSMenu
и NSMenuItem
предоставьте Вам методы, чтобы изменить меню Вашего приложения динамично, в частности позволить Вам включать и отключать существующие пункты меню (см. Пункты меню Включения).
Меню приложения
Все меню приложения в строке меню принадлежат одной NSMenu
экземпляр это создается приложением, когда это запускает. Можно получить это главное меню с NSApplication
метод mainMenu
.
Меню приложения, выпадающие от строки меню, когда пользовательские щелчки в заголовке меню и подменю появляются вправо или оставленный их меню, в зависимости от доступного экранного пространства.
Кнопки всплывающего меню и выпадающие списки
Кнопки всплывающего меню реализованы NSPopUpButton
класс. Можно выбрать из раскрывающегося списка или выпадающего списка, с setPullsDown:
метод:
Раскрывающийся список позволяет пользователю выбрать одну опцию среди нескольких и обычно выводит на экран в последний раз выбранную опцию.
Необходимо использовать раскрывающийся список для выбора элементов из набора среднего размера опций, приблизительно 5 - 12 элементов. Обычно меньшие списки лучше обрабатываются с группой переключателей; и большие списки, со списком прокрутки. Однако, если пространство является с надбавкой раскрывающимся списком, может быть подходящим для других размеров списка. Например, раскрывающийся список, выводящий на экран различные факторы изменения масштаба, может легко соответствовать рядом с полосой прокрутки у основания окна.
Выпадающий список обычно используется для выбора команд в определенном контексте.
NSPopUpButton
объект содержит NSPopUpButtonCell
объект. Кнопка содержит данные кнопки, и ячейка управляет появлением кнопки. Обычно Вы вызовете методы на NSPopUpButton
объект, несмотря на то, что большая часть работы обрабатывается NSPopUpButtonCell
экземпляр. Большая часть NSPopUpButton
методы являются удобными методами, просто вызывающими тот же метод на ячейку.
Для реализации его меню ячейка кнопки содержит NSMenu
объект, поочередно содержащий несколько NSMenuItem
объекты, один для каждого элемента в меню. Избегите вызывать методы на NSMenu
возразите непосредственно, но вместо этого вызовите методы на NSPopUpButton
экземпляр, который, возможно, должен сделать некоторое обслуживание прежде, чем вызвать надлежащие методы на меню. Однако можно получить меню с NSPopUpButton
метод menu
. NSPopUpButton
методы, которые Вы используете чаще всего, являются методами, говорящими Вам, какой элемент выбран.
Обычно Вы создаете NSPopUpButton
объект с Интерфейсным Разработчиком. Можно определить NSPopUpButton
цель и действие объекта, а также цели и действия каждого элемента в списке кнопки, программно или через Интерфейсного Разработчика.
Контекстные меню
Можно присоединить контекстное меню к любому NSView
объект. Когда щелчки контроля за работой пользователей по тому представлению, появляется меню. Для присвоения меню представлению использовать setMenu:
, который NSView
наследовался от NSResponder
.
Ваш подкласс может определить меню, которое это используется для всех экземпляров путем реализации defaultMenu
метод класса. Для изменения меню, выведенного на экран на основе события от нажатия мыши, переопределите menuForEvent:
метод экземпляра. Это позволяет представление, по которому щелкают, чтобы вывести на экран различные меню на основе расположения мыши и состояния представления, или изменить или включить отдельные пункты меню на основе команд, доступных для представления или для той области представления.