---
title: UITraitChangeObservable.TraitChangeHandler
framework: uikit
role: symbol
role_heading: Type Alias
path: uikit/uitraitchangeobservable-67e94/traitchangehandler
---

# UITraitChangeObservable.TraitChangeHandler

A closure the system executes when observed traits change.

## Declaration

```swift
typealias TraitChangeHandler<TraitEnvironment> = (TraitEnvironment, UITraitCollection) -> Void where TraitEnvironment : UITraitEnvironment
```

## Parameters

- `traitEnvironment`: The observed object containing the updated trait collection.
- `previousTraitCollection`: The trait collection prior to the changes that triggered the execution of the handler.

## Discussion

Discussion Use registerForTraitChanges(_:handler:) to register a list of traits to observe and a handler to execute. If the closure captures a strong reference to the object receiving the registration, it creates a strong reference cycle. Use the traitEnvironment parameter to refer to the observed object inside the closure.

## See Also

### Observing trait changes

- [registerForTraitChanges(_:action:)](uikit/uitraitchangeobservable-67e94/registerfortraitchanges(_:action:).md)
- [registerForTraitChanges(_:handler:)](uikit/uitraitchangeobservable-67e94/registerfortraitchanges(_:handler:).md)
- [registerForTraitChanges(_:target:action:)](uikit/uitraitchangeobservable-67e94/registerfortraitchanges(_:target:action:).md)
- [unregisterForTraitChanges(_:)](uikit/uitraitchangeobservable-67e94/unregisterfortraitchanges(_:).md)
- [UITraitChangeRegistration](uikit/uitraitchangeregistration.md)
