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

# UIScrollViewDelegate

The interface for the delegate of a scroll view.

```
@MainActor protocol UIScrollViewDelegate : NSObjectProtocol
```

## Overview

The methods that the [`UIScrollViewDelegate`](/documentation/UIKit/UIScrollViewDelegate) protocol declares allow the adopting delegate to respond to messages from the [`UIScrollView`](/documentation/UIKit/UIScrollView) class. The delegate responds to and affects operations like scrolling, zooming, deceleration of scrolled content, and scrolling animations.

## Topics

### Responding to scrolling and dragging

[`scrollViewDidScroll(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewDidScroll(_:))

Tells the delegate when the user scrolls the content view within the scroll view.

[`scrollViewWillBeginDragging(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewWillBeginDragging(_:))

Tells the delegate when the scroll view is about to start scrolling the content.

[`scrollViewWillEndDragging(_:withVelocity:targetContentOffset:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewWillEndDragging(_:withVelocity:targetContentOffset:))

Tells the delegate when the user finishes scrolling the content.

[`scrollViewDidEndDragging(_:willDecelerate:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewDidEndDragging(_:willDecelerate:))

Tells the delegate when dragging ended in the scroll view.

[`scrollViewShouldScrollToTop(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewShouldScrollToTop(_:))

Asks the delegate if the scroll view should scroll to the top of the content.

[`scrollViewDidScrollToTop(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewDidScrollToTop(_:))

Tells the delegate that the scroll view scrolled to the top of the content.

[`scrollViewWillBeginDecelerating(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewWillBeginDecelerating(_:))

Tells the delegate that the scroll view is starting to decelerate the scrolling movement.

[`scrollViewDidEndDecelerating(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewDidEndDecelerating(_:))

Tells the delegate that the scroll view ended decelerating the scrolling movement.

### Managing zooming

[`viewForZooming(in:)`](/documentation/UIKit/UIScrollViewDelegate/viewForZooming(in:))

Asks the delegate for the view to scale when zooming is about to occur in the scroll view.

[`scrollViewWillBeginZooming(_:with:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewWillBeginZooming(_:with:))

Tells the delegate that zooming of the content in the scroll view is about to commence.

[`scrollViewDidEndZooming(_:with:atScale:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewDidEndZooming(_:with:atScale:))

Tells the delegate when zooming of the content in the scroll view completed.

[`scrollViewDidZoom(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewDidZoom(_:))

Tells the delegate that the scroll view’s zoom factor changed.

### Responding to scrolling animations

[`scrollViewDidEndScrollingAnimation(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewDidEndScrollingAnimation(_:))

Tells the delegate when a scrolling animation in the scroll view concludes.

### Responding to inset changes

[`scrollViewDidChangeAdjustedContentInset(_:)`](/documentation/UIKit/UIScrollViewDelegate/scrollViewDidChangeAdjustedContentInset(_:))

Tells the delegate when the scroll view’s inset values 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)