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

# AVPlayerViewControllerDelegate

A protocol that defines the methods to implement to respond to player view controller events.

```
protocol AVPlayerViewControllerDelegate : NSObjectProtocol
```

## Topics

### Dismissing the Player View Controller

[`-  playerViewControllerShouldDismiss:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewControllerShouldDismiss(_:))

Asks the delegate object whether the player view controller dismisses itself upon request.

[`-  playerViewControllerWillBeginDismissalTransition:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewControllerWillBeginDismissalTransition(_:))

Tells the delegate when the player view controller is about to start its dismissal transition.

[`-  playerViewControllerDidEndDismissalTransition:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewControllerDidEndDismissalTransition(_:))

Tells the delegate when the player view controller ends its dismissal transition.

### Responding to Picture in Picture Life Cycle Events

[`-  playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart(_:))

Asks the delegate whether the player view controller automatically dismisses itself when Picture in Picture starts.

[`-  playerViewControllerWillStartPictureInPicture:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewControllerWillStartPictureInPicture(_:))

Tells the delegate when Picture in Picture is about to start.

[`-  playerViewControllerDidStartPictureInPicture:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewControllerDidStartPictureInPicture(_:))

Tells the delegate when Picture in Picture starts.

[`-  playerViewController:failedToStartPictureInPictureWithError:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:failedToStartPictureInPictureWithError:))

Tells the delegate when Picture in Picture fails to start.

[`-  playerViewControllerWillStopPictureInPicture:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewControllerWillStopPictureInPicture(_:))

Tells the delegate when Picture in Picture is about to stop.

[`-  playerViewControllerDidStopPictureInPicture:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewControllerDidStopPictureInPicture(_:))

Tells the delegate when Picture in Picture stops.

[`-  playerViewController:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:))

Tells the delegate when Picture in Picture is about to stop so you can restore your app’s user interface.

### Responding to Navigation Events

[`-  playerViewController:timeToSeekAfterUserNavigatedFromTime:toTime:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:timeToSeekAfterUserNavigatedFrom:to:))

Tells the delegate when the user skips, scrubs, or otherwise navigates to a new time and wants to resume playback at the target time.

[`-  playerViewController:willResumePlaybackAfterUserNavigatedFromTime:toTime:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:willResumePlaybackAfterUserNavigatedFrom:to:))

Tells the delegate when the user navigates to a new time and playback is about to begin.

[`-  skipToPreviousItemForPlayerViewController:`](/documentation/AVKit/AVPlayerViewControllerDelegate/skipToPreviousItem(for:))

Tells the delegate when the user requests skipping to the previous item in the timeline.

[`-  skipToNextItemForPlayerViewController:`](/documentation/AVKit/AVPlayerViewControllerDelegate/skipToNextItem(for:))

Tells the delegate when the user requests skipping to the next item in the timeline.

### Responding to Interstitial Content Playback Events

[`-  playerViewController:willPresentInterstitialTimeRange:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:willPresent:))

Tells the delegate when the player view controller is about to start playing a range of interstitial content.

[`-  playerViewController:didPresentInterstitialTimeRange:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:didPresent:))

Tells the delegate when the player view controller finishes playing a range of interstitial content.

### Responding to Content Proposals

[`-  playerViewController:shouldPresentContentProposal:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:shouldPresent:))

Asks the delegate whether the player view controller presents a content proposal.

[`-  playerViewController:didAcceptContentProposal:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:didAccept:))

Tells the delegate when the user accepts the proposed content.

[`-  playerViewController:didRejectContentProposal:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:didReject:))

Tells the delegate when the user rejects the proposed content.

### Responding to Media Selection

[`-  playerViewController:didSelectMediaSelectionOption:inMediaSelectionGroup:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:didSelect:in:))

Tells the delegate when the user selects a media option from a media selection group.

[`-  playerViewController:didSelectExternalSubtitleOptionLanguage:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController:didSelectExternalSubtitleOptionLanguage:)

Tells the delegate when the user selects a specific subtitle option.

### Responding to Transport Bar Changes

[`-  playerViewController:willTransitionToVisibilityOfTransportBar:withAnimationCoordinator:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:willTransitionToVisibilityOfTransportBar:with:))

Tells the delegate when the transport bar’s visibility is about to change.

[`AVPlayerViewControllerAnimationCoordinator`](/documentation/AVKit/AVPlayerViewControllerAnimationCoordinator)

A protocol that defines the methods to implement to synchronize animations with playback controls’ visibility animation.

### Responding to Channel Changes

[`-  playerViewController:skipToNextChannel:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:skipToNextChannel:))

Tells the delegate when the user wants to skip to the next channel.

[`-  playerViewController:skipToPreviousChannel:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:skipToPreviousChannel:))

Tells the delegate when the user wants to skip to the previous channel.

[`-  nextChannelInterstitialViewControllerForPlayerViewController:`](/documentation/AVKit/AVPlayerViewControllerDelegate/nextChannelInterstitialViewController(for:))

Asks the delegate for a view controller that describes the layout of the next channel’s interstitial view.

[`-  previousChannelInterstitialViewControllerForPlayerViewController:`](/documentation/AVKit/AVPlayerViewControllerDelegate/previousChannelInterstitialViewController(for:))

Asks the delegate for a view controller that describes the layout of the previous channel’s interstitial view.

### Responding to Full-Screen Presentations

[`-  playerViewController:willBeginFullScreenPresentationWithAnimationCoordinator:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:willBeginFullScreenPresentationWithAnimationCoordinator:))

Tells the delegate when the player view controller is about to start full-screen display.

[`-  playerViewController:willEndFullScreenPresentationWithAnimationCoordinator:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:willEndFullScreenPresentationWithAnimationCoordinator:))

Tells the delegate when the player view controller is about to end full-screen display.

[`-  playerViewController:restoreUserInterfaceForFullScreenExitWithCompletionHandler:`](/documentation/AVKit/AVPlayerViewControllerDelegate/playerViewController(_:restoreUserInterfaceForFullScreenExitWithCompletionHandler:))

Tells the delegate to restore the app’s user interface after returning from a full-screen presentation.

## 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)