Mac Developer Library

Developer

AppKit Framework Reference NSMenuView Class Reference

Options
Deployment Target:

On This Page
Language:

NSMenuView

The NSMenuView class handles the display of menus on the user’s screen. A menu view displays its menu either horizontally or vertically and allows the user to interact with the items of that menu, either to navigate through hierarchical menus or to select a particular item.

Inheritance


Import Statement


Not Applicable

Objective-C

@import AppKit;

Availability


Available in OS X v10.0 and later.
Not available to 64-bit applications.
  • Deprecated. Tear-off menus are not supported in OS X.

    Declaration

    Objective-C

    - (id)initAsTearOff

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Initialized a newly allocated menu view with a specified frame rectangle.

    Declaration

    Objective-C

    - (id)initWithFrame:(NSRect)frame

    Discussion

    This method is the designated initialization method for NSMenuView.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the height of the menu bar.

    Declaration

    Objective-C

    + (CGFloat)menuBarHeight

    Discussion

    This method is superseded in OS X v10.4 by the NSMenu menuBarHeight instance method.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Sets the menu to be displayed in the receiver

    Declaration

    Objective-C

    - (void)setMenu:(NSMenu *)menu

    Discussion

    This method invokes the setNeedsSizing: method to force the menu view’s layout to be recalculated before drawing.

    This method adds the menu view to the new NSMenu object’s list of observers. The notifications this method establishes notify this menu view when menu items in the NSMenu object are added, removed, or changed. This method removes the menu view from its previous NSMenu object’s list of observers.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the menu object associated with this menu view.

    Declaration

    Objective-C

    - (NSMenu *)menu

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

    See Also

    – setMenu:

  • Sets the orientation of the menu.

    Declaration

    Objective-C

    - (void)setHorizontal:(BOOL)flag

    Discussion

    If flag is YEStrue, the menu’s items are displayed horizontally; otherwise the menu’s items are displayed vertically.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns YEStrue if the menu is displayed horizontally; such as for a menu bar, otherwise returns NOfalse.

    Declaration

    Objective-C

    - (BOOL)isHorizontal

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Sets the default font to use when drawing the menu text.

    Declaration

    Objective-C

    - (void)setFont:(NSFont *)font

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

    See Also

    – font

  • Returns the default font used to draw the menu text.

    Declaration

    Objective-C

    - (NSFont *)font

    Discussion

    New items use this font by default, although the item’s menu item cell can use a different font.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

    See Also

    – setFont:

  • Highlights the menu item at a specific location.

    Declaration

    Objective-C

    - (void)setHighlightedItemIndex:(NSInteger)index

    Discussion

    Specify –1 for index to remove all highlighting from the menu.

    The rectangle of the menu item is marked as invalid and is redrawn the next time the event loop comes around. If another menu item was previously highlighted, that menu item is redrawn without highlights when the event loop comes around again.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the index of the currently highlighted menu item, or –1 if no menu item in the menu is highlighted.

    Declaration

    Objective-C

    - (NSInteger)highlightedItemIndex

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Replaces the menu item cell at a specific location.

    Declaration

    Objective-C

    - (void)setMenuItemCell:(NSMenuItemCell *)cell forItemAtIndex:(NSInteger)index

    Discussion

    This method does not change the contents of the menu itself; it changes only the cell used to display the menu item at index. The old cell is released, and both the new cell and the menu view are marked as needing resizing.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the menu item cell at the specified location.

    Declaration

    Objective-C

    - (NSMenuItemCell *)menuItemCellForItemAtIndex:(NSInteger)index

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the receiver’s attached menu view.

    Declaration

    Objective-C

    - (NSMenuView *)attachedMenuView

    Discussion

    The attached menu view is the one associated with the currently visible submenu, if any.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the menu object associated with this object’s attached menu view.

    Declaration

    Objective-C

    - (NSMenu *)attachedMenu

    Discussion

    The attached menu view is the one associated with the currently visible submenu, if any.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns YEStrue if this menu is currently attached to its parent menu, NOfalse otherwise.

    Declaration

    Objective-C

    - (BOOL)isAttached

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Deprecated. Tear-off menus are not supported in OS X.

    Declaration

    Objective-C

    - (BOOL)isTornOff

    Discussion

    Returns YEStrue if this menu view’s window is disassociated from its parent menu.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the amount of horizontal space used for padding menu item components.

    Declaration

    Objective-C

    - (CGFloat)horizontalEdgePadding

    Discussion

    The edge padding is added to the sides of each menu item component. This space is used to provide a visual separation between components of the menu item.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Sets the horizontal padding for menu item components.

    Declaration

    Objective-C

    - (void)setHorizontalEdgePadding:(CGFloat)pad

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Marks the menu view as needing to be resized so changes in size resulting from a change in the menu will be tracked.

    Declaration

    Objective-C

    - (void)itemChanged:(NSNotification *)notification

    Discussion

    This method is registered with the menu view’s associated NSMenu object for notifications of the type NSMenuDidChangeItemNotification. The notification parameter contains the notification data.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Creates a new menu item cell for the newly created item and marks the menu view as needing to be resized.

    Declaration

    Objective-C

    - (void)itemAdded:(NSNotification *)notification

    Discussion

    This method is registered with the menu view’s associated NSMenu object for notifications of the type NSMenuDidAddItemNotification. The notification parameter contains the notification data.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Removes the removed item’s menu item cell and marks the menu view as needing to be resized.

    Declaration

    Objective-C

    - (void)itemRemoved:(NSNotification *)notification

    Discussion

    This method is registered with the menu view’s associated NSMenu object for notifications of the type NSMenuDidRemoveItemNotification. The notification parameter contains the notification data.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Asks the associated menu object to update itself.

    Declaration

    Objective-C

    - (void)update

    Discussion

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view’s layout.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Sets a flag that indicates whether the layout is invalid and needs resizing.

    Declaration

    Objective-C

    - (void)setNeedsSizing:(BOOL)flag

    Discussion

    If flag is YEStrue, the menu contents have changed or the menu appearance has changed. This method is used internally; you should not need to invoke it directly unless you are implementing a subclass that can cause the layout to become invalid.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

    See Also

    – sizeToFit

  • Returns YEStrue if the menu view needs to be resized due to changes in the menu object, NOfalse otherwise.

    Declaration

    Objective-C

    - (BOOL)needsSizing

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Used internally by the menu view to cache information about the menu item geometry.

    Declaration

    Objective-C

    - (void)sizeToFit

    Discussion

    This cache is updated as necessary when menu items are added, removed, or changed.

    The geometry of each menu item is determined by asking its corresponding menu item cell. The menu item cell is obtained from the menuItemCellForItemAtIndex: method.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the offset to the space reserved for state images of this menu.

    Declaration

    Objective-C

    - (CGFloat)stateImageOffset

    Discussion

    The offset is used for all menu items of the menu.

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the maximum width of the state images used by this menu.

    Declaration

    Objective-C

    - (CGFloat)stateImageWidth

    Discussion

    The width is used for all menu items of the menu.

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

    See Also

    – sizeToFit

  • Returns the offset to the starting point of a menu item’s image and title section.

    Declaration

    Objective-C

    - (CGFloat)imageAndTitleOffset

    Discussion

    The image and title section of a menu item displays an image, a title, or possibly both as a way to identify the purpose of the menu item. The value returned by this method is used for all menu items of the menu.

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the maximum width of a menu item’s image and title section.

    Declaration

    Objective-C

    - (CGFloat)imageAndTitleWidth

    Discussion

    The image and title section of a menu item displays an image, a title, or possibly both as a way to identify the purpose of the menu item. The value returned by this method is used for all menu items of the menu.

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the beginning position of the menu’s key equivalent text.

    Declaration

    Objective-C

    - (CGFloat)keyEquivalentOffset

    Discussion

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the width of the menu’s key equivalent text.

    Declaration

    Objective-C

    - (CGFloat)keyEquivalentWidth

    Discussion

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the drawing rectangle for the menu contents.

    Declaration

    Objective-C

    - (NSRect)innerRect

    Discussion

    This rectangle is different (typically smaller) from the view bounds in that it does not include the space used to draw the menu borders.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

    See Also

    – bounds (NSView)

  • Returns the drawing rectangle of the specified menu item.

    Declaration

    Objective-C

    - (NSRect)rectOfItemAtIndex:(NSInteger)index

    Discussion

    The drawing rectangle may not be the same width or height as the actual menu and in fact is typically smaller to account for borders drawn by the menu view.

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the index of the menu item underneath the specified or –1 if no menu item is underneath that point.

    Declaration

    Objective-C

    - (NSInteger)indexOfItemAtPoint:(NSPoint)point

    Discussion

    This method considers the menu borders as part of the item when calculating whether point is in the menu item rectangle. This method invokes the rectOfItemAtIndex: method to obtain the basic rectangle for each menu item but may adjust that rectangle before testing.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Adds the region occupied by the menu item at a specific location to the menu view’s invalid region.

    Declaration

    Objective-C

    - (void)setNeedsDisplayForItemAtIndex:(NSInteger)index

    Discussion

    The region to be redrawn includes the space occupied by the menu borders. This invalid region is redrawn the next time the event loop comes around.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Returns the origin of the submenu view’s window.

    Declaration

    Objective-C

    - (NSPoint)locationForSubmenu:(NSMenu *)aSubmenu

    Discussion

    The aSubmenu parameter specifies the submenu being positioned and must belong to a menu item of this menu view. This method positions the submenu adjacent to its menu item as well as possible given the type of menu and the space constraints of the user’s screen.

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Causes the menu view to resize its window so its frame is the appropriate size to attach to a specified rectangle within the screen.

    Declaration

    Objective-C

    - (void)setWindowFrameForAttachingToRect:(NSRect)screenRect onScreen:(NSScreen *)screen preferredEdge:(NSRectEdge)edge popUpSelectedItem:(NSInteger)selectedItemIndex

    Discussion

    If selectedItemIndex contains a value other than –1, this method attempts to position the menu such that the item at selectedItemIndex appears on top of screenRect.

    The selectedItemIndex parameter specifies the amount by which the selected item’s rectangle overlaps screenRect.

    If the preferred edge, edge, cannot be honored, because there is not enough room, the opposite edge is used. If the rectangle does not completely fit either edge, this method uses the edge where there is more room.

    If any changes have been made to the menu’s contents, this method invokes sizeToFit to update the menu view information.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

    See Also

    – sizeToFit

  • Uses the associated menu object to perform the action associated with the specified item when a key equivalent is pressed.

    Declaration

    Objective-C

    - (void)performActionWithHighlightingForItemAtIndex:(NSInteger)index

    Discussion

    Because the menu item at index might not currently be visible, this method provides visual feedback by highlighting the nearest visible parent menu item before performing the action. After the action has been sent, this method removes the highlighting for the menu item.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.

  • Handles events sent to this menu view.

    Declaration

    Objective-C

    - (BOOL)trackWithEvent:(NSEvent *)event

    Discussion

    If event is a mouse event, this method tracks the cursor position in the menu and displays the menus as appropriate. This method also handles mouse clicks that result in the selection of a menu item, in which case the menu item’s action is performed.

    You should not need to use this method directly.

    Import Statement

    Objective-C

    @import AppKit;

    Availability

    Available in OS X v10.0 and later.

    Not available to 64-bit applications.