---
title: NSMenuDelegate
framework: appkit
role: symbol
role_heading: Protocol
path: appkit/nsmenudelegate
---

# NSMenuDelegate

The optional methods implemented by delegates of NSMenu objects to manage menu display and handle some events.

## Declaration

```swift
protocol NSMenuDelegate : NSObjectProtocol
```

## Topics

### Handling Keyboard Equivalents

- [menuHasKeyEquivalent(_:for:target:action:)](appkit/nsmenudelegate/menuhaskeyequivalent(_:for:target:action:).md)

### Updating Menu Layout

- [menu(_:update:at:shouldCancel:)](appkit/nsmenudelegate/menu(_:update:at:shouldcancel:).md)
- [confinementRect(for:on:)](appkit/nsmenudelegate/confinementrect(for:on:).md)

### Handling Highlighting

- [menu(_:willHighlight:)](appkit/nsmenudelegate/menu(_:willhighlight:).md)

### Handling Open and Close Events

- [menuWillOpen(_:)](appkit/nsmenudelegate/menuwillopen(_:).md)
- [menuDidClose(_:)](appkit/nsmenudelegate/menudidclose(_:).md)

### Handling Tracking

- [numberOfItems(in:)](appkit/nsmenudelegate/numberofitems(in:).md)
- [menuNeedsUpdate(_:)](appkit/nsmenudelegate/menuneedsupdate(_:).md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Menus

- [NSMenu](appkit/nsmenu.md)
- [NSMenuItem](appkit/nsmenuitem.md)
- [NSMenuItemBadge](appkit/nsmenuitembadge.md)
