<!--
{
  "availability" : [
    "iOS: 7.0.0 - 10.0.0",
    "iPadOS: 7.0.0 - 10.0.0",
    "macCatalyst: 13.1.0 - 13.1.0",
    "tvOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIViewControllerTransitionCoordinator/notifyWhenInteractionEnds(_:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(pl)UIViewControllerTransitionCoordinator(im)notifyWhenInteractionEndsUsingBlock:"
  },
  "title" : "notifyWhenInteractionEnds(_:)"
}
-->

# notifyWhenInteractionEnds(_:)

Registers a block to be executed when a transition changes from interactive to non-interactive.

```
func notifyWhenInteractionEnds(_ handler: @escaping (any UIViewControllerTransitionCoordinatorContext) -> Void)
```

## Parameters

`handler`

The block to execute when the transition changes from interactive to noninteractive. The block has no return value and takes the following parameter:

- context: The contextual information for performing the animations. Use this object to get the animation-related information. For more information, see [`UIViewControllerTransitionCoordinatorContext`](/documentation/UIKit/UIViewControllerTransitionCoordinatorContext).

## Discussion

Your block is executed both when the transition completes normally and when the user cancels the transition. In the case where the user cancels the transition, UIKit executes your `context` block, calls the [`viewWillDisappear(_:)`](/documentation/UIKit/UIViewController/viewWillDisappear(_:)) method on the presented view controller, and finally calls the [`viewWillAppear(_:)`](/documentation/UIKit/UIViewController/viewWillAppear(_:)) method on the original view controller to signal that it’s once again visible.

Inside your block, you can get the value of the [`isCancelled`](/documentation/UIKit/UIViewControllerTransitionCoordinatorContext/isCancelled) method of the transition coordinator context and use that value to determine the appropriate course of action. For example, if the transition was canceled, you might use this block to remove any extra views that were added to the view hierarchy by a previous call to [`animate(alongsideTransition:completion:)`](/documentation/UIKit/UIViewControllerTransitionCoordinator/animate(alongsideTransition:completion:)) or [`animateAlongsideTransition(in:animation:completion:)`](/documentation/UIKit/UIViewControllerTransitionCoordinator/animateAlongsideTransition(in:animation:completion:)).

You can call this method multiple times to register multiple blocks. All of the registered blocks are executed when the transition state changes.

---

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)