<!--
{
  "availability" : [
    "macOS: 11.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSControl/Events",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:@E@NSControlEvents"
  },
  "title" : "NSControl.Events"
}
-->

# NSControl.Events

A set of events that a control can report to its target.

```
struct Events
```

## Discussion

You set up a control to send an action message to a target object by associating both target and action with one or more control events. To do this, call [`addTarget(_:action:for:)`](/documentation/AppKit/NSControl/addTarget(_:action:for:)) on the control for each target-action pair you want to specify.

```swift
let slider = NSSlider()
slider.addTarget(self, action: #selector(sliderValueChanged), for: .valueChanged)

let button = NSButton()
button.addTarget(self, action: #selector(buttonActivated), for: [.primaryActionTriggered, .menuActionTriggered])
```

Use tracking events to observe the progress of mouse interaction as it unfolds — for example, to respond to a drag in progress rather than only on completion. Use semantic events like [`valueChanged`](/documentation/AppKit/NSControl/Events/valueChanged), [`primaryActionTriggered`](/documentation/AppKit/NSControl/Events/primaryActionTriggered), or [`menuActionTriggered`](/documentation/AppKit/NSControl/Events/menuActionTriggered) to respond to higher-level, input-device-independent meanings. [`applicationReserved`](/documentation/AppKit/NSControl/Events/applicationReserved) is a range of bits available for app use.

## Topics

### Tracking events

[`NSControlEventTrackingBegan`](/documentation/AppKit/NSControl/Events/trackingBegan)

A tracking began event in the control.

[`NSControlEventTrackingRepeated`](/documentation/AppKit/NSControl/Events/trackingRepeated)

A repeated tracking began event in the control. For this event the click count is greater than one.

[`NSControlEventTrackingInside`](/documentation/AppKit/NSControl/Events/trackingInside)

An event where the pointer or touch moves inside the bounds of the control.

[`NSControlEventTrackingOutside`](/documentation/AppKit/NSControl/Events/trackingOutside)

An event where the pointer or touch moves outside the bounds of the control.

[`NSControlEventTrackingEntered`](/documentation/AppKit/NSControl/Events/trackingEntered)

An event where tracking transitions from outside to inside the bounds of the control.

[`NSControlEventTrackingExited`](/documentation/AppKit/NSControl/Events/trackingExited)

An event where tracking transitions from inside to outside the bounds of the control.

[`NSControlEventTrackingEndedInside`](/documentation/AppKit/NSControl/Events/trackingEndedInside)

A tracking ended event where the pointer or touch is inside the bounds of the control.

[`NSControlEventTrackingEndedOutside`](/documentation/AppKit/NSControl/Events/trackingEndedOutside)

A tracking ended event where the pointer or touch is outside the bounds of the control.

[`NSControlEventTrackingCancelled`](/documentation/AppKit/NSControl/Events/trackingCancelled)

A system event canceling the current tracking for the control.

### Semantic events

[`NSControlEventValueChanged`](/documentation/AppKit/NSControl/Events/valueChanged)

An event where dragging or otherwise manipulating a control causes it to emit a series of different values.

[`NSControlEventPrimaryActionTriggered`](/documentation/AppKit/NSControl/Events/primaryActionTriggered)

A semantic action triggered by buttons.

[`NSControlEventMenuActionTriggered`](/documentation/AppKit/NSControl/Events/menuActionTriggered)

A menu action has triggered prior to the menu being presented.

### Aggregate events

[`NSControlEventAllTrackingEvents`](/documentation/AppKit/NSControl/Events/allTrackingEvents)

All tracking events.

[`NSControlEventAllEvents`](/documentation/AppKit/NSControl/Events/allEvents)

All events, including system events.

### Reserved ranges

[`NSControlEventApplicationReserved`](/documentation/AppKit/NSControl/Events/applicationReserved)

A range of control-event values available for app use.

[`NSControlEventSystemReserved`](/documentation/AppKit/NSControl/Events/systemReserved)

A range of control-event values reserved for internal framework use.

## Relationships

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

[`OptionSet`](/documentation/Swift/OptionSet)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`ExpressibleByArrayLiteral`](/documentation/Swift/ExpressibleByArrayLiteral)

[`BitwiseCopyable`](/documentation/Swift/BitwiseCopyable)

[`RawRepresentable`](/documentation/Swift/RawRepresentable)

[`Sendable`](/documentation/Swift/Sendable)

[`SetAlgebra`](/documentation/Swift/SetAlgebra)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)