<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "tvOS: -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIAdaptivePresentationControllerDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(pl)UIAdaptivePresentationControllerDelegate"
  },
  "title" : "UIAdaptivePresentationControllerDelegate"
}
-->

# UIAdaptivePresentationControllerDelegate

A set of methods that, in conjunction with a presentation controller, determine how to respond to trait changes in your app.

```
@MainActor protocol UIAdaptivePresentationControllerDelegate : NSObjectProtocol
```

## Overview

After implementing an object that conforms to this protocol, assign that object to the [`delegate`](/documentation/UIKit/UIPresentationController/delegate) property of an appropriate [`UIPresentationController`](/documentation/UIKit/UIPresentationController) object. Your delegate can suggest a new presentation style or an entirely new view controller for displaying content. For more information about using the delegate to respond to size class changes, see [`UIPresentationController`](/documentation/UIKit/UIPresentationController).

## Topics

### Adapting the presentation style

[`adaptivePresentationStyle(for:traitCollection:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/adaptivePresentationStyle(for:traitCollection:))

Asks the delegate for the presentation style to use when the specified set of traits are active.

[`adaptivePresentationStyle(for:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/adaptivePresentationStyle(for:))

Asks the delegate for the new presentation style to use.

### Adapting the view controller

[`presentationController(_:viewControllerForAdaptivePresentationStyle:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/presentationController(_:viewControllerForAdaptivePresentationStyle:))

Asks the delegate for the view controller to display when adapting to the specified presentation style.

### Responding to adaptive transitions

[`presentationController(_:willPresentWithAdaptiveStyle:transitionCoordinator:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/presentationController(_:willPresentWithAdaptiveStyle:transitionCoordinator:))

Notifies the delegate that an adaptivity-related transition is about to occur.

[`presentationControllerDidAttemptToDismiss(_:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/presentationControllerDidAttemptToDismiss(_:))

Notifies the delegate that a user-initiated attempt to dismiss a view was prevented.

[`presentationControllerShouldDismiss(_:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/presentationControllerShouldDismiss(_:))

Asks the delegate for permission to dismiss the presentation.

[`presentationControllerDidDismiss(_:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/presentationControllerDidDismiss(_:))

Notifies the delegate after a presentation is dismissed.

[`presentationControllerWillDismiss(_:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/presentationControllerWillDismiss(_:))

Notifies the delegate before a presentation is dismissed.

### Preparing the adaptive presentation controller

[`presentationController(_:prepare:)`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate/presentationController(_:prepare:))

Provides an opportunity to configure the adaptive presentation controller after an adaptivity change.



---

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)