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

# UIPopoverPresentationControllerDelegate

The interface for a popover presentation delegate, which lets you customize the behavior of a popover-based presentation.

```
@MainActor protocol UIPopoverPresentationControllerDelegate : UIAdaptivePresentationControllerDelegate
```

## Overview

A popover presentation controller notifies your delegate at appropriate points during the presentation process. You can use the delegate methods to customize this process and respond to changes dynamically.

After defining an object that adopts this protocol, assign that object to the [`delegate`](/documentation/UIKit/UIPopoverPresentationController/delegate) property of a [`UIPopoverPresentationController`](/documentation/UIKit/UIPopoverPresentationController) object. You must present a view controller using the [`UIModalPresentationStyle.popover`](/documentation/UIKit/UIModalPresentationStyle/popover) style before you can obtain such an object. For more information about popover presentation controllers, see [`UIPopoverPresentationController`](/documentation/UIKit/UIPopoverPresentationController).

## Topics

### Presenting and dismissing the popover

[`-  prepareForPopoverPresentation:`](/documentation/UIKit/UIPopoverPresentationControllerDelegate/prepareForPopoverPresentation(_:))

Notifies the delegate that the popover is about to be presented.

[`-  popoverPresentationControllerShouldDismissPopover:`](/documentation/UIKit/UIPopoverPresentationControllerDelegate/popoverPresentationControllerShouldDismissPopover(_:))

Asks the delegate if the popover should be dismissed.

[`-  popoverPresentationControllerDidDismissPopover:`](/documentation/UIKit/UIPopoverPresentationControllerDelegate/popoverPresentationControllerDidDismissPopover(_:))

Tells the delegate that the popover was dismissed.

### Repositioning the popover

[`-  popoverPresentationController:willRepositionPopoverToRect:inView:`](/documentation/UIKit/UIPopoverPresentationControllerDelegate/popoverPresentationController(_:willRepositionPopoverTo:in:))

Tells the delegate that UIKit needs to reposition the popover’s location.

## Relationships

### Inherits From

[`UIAdaptivePresentationControllerDelegate`](/documentation/UIKit/UIAdaptivePresentationControllerDelegate)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

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)