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

# UIViewControllerPreviewing

A set of methods that define the interface for configuring a previewing view controller on devices that support 3D Touch.

```
@MainActor protocol UIViewControllerPreviewing : NSObjectProtocol
```

## Overview

The system returns a context object conforming to this protocol when you call a view controller’s [`registerForPreviewing(with:sourceView:)`](/documentation/UIKit/UIViewController/registerForPreviewing(with:sourceView:)) method. This method registers the view controller to participate in 3D Touch preview (peek) and commit (pop) behaviors.

> Terminology Note:
> The end-user terminology for the views presented during the phases of force-based touches includes *peek* and *pop*. For clarity here, and to align with the API names, this document uses the corresponding terms *preview* and *commit view*.

To learn about 3D Touch, read [Adopting 3D Touch on iPhone](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/Adopting3DTouchOniPhone/index.html#//apple_ref/doc/uid/TP40016543).

> Important:
> Don’t adopt this protocol in custom classes.

## Topics

### Configuring a source view for a 3D Touch previewing view controller

[`sourceRect`](/documentation/UIKit/UIViewControllerPreviewing/sourceRect)

The rectangle, in the source view’s coordinate system, that responds to a 3D Touch by a user and remains visually sharp while surrounding content blurs.

[`previewingGestureRecognizerForFailureRelationship`](/documentation/UIKit/UIViewControllerPreviewing/previewingGestureRecognizerForFailureRelationship)

A gesture recognizer suitable for setting up failure requirements for a preview’s (peek’s) gestures.

### Accessing properties of a 3D Touch previewing view controller

[`delegate`](/documentation/UIKit/UIViewControllerPreviewing/delegate)

The previewing view controller’s delegate for managing preview (peek) and commit (pop) view controllers.

[`sourceView`](/documentation/UIKit/UIViewControllerPreviewing/sourceView)

A source view, in a previewing view controller’s view hierarchy, responds to a 3D Touch by the user.

## Relationships

### Inherits From

[`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)