<!--
{
  "availability" : [
    "iOS: 2.0.0 -",
    "iPadOS: 2.0.0 -",
    "macCatalyst: 13.1.0 -",
    "tvOS: -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIResponder/touchesEnded(_:with:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(cs)UIResponder(im)touchesEnded:withEvent:"
  },
  "title" : "touchesEnded(_:with:)"
}
-->

# touchesEnded(_:with:)

Tells the responder when one or more fingers are raised from a view or window.

```
func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?)
```

## Parameters

`touches`

A set of [`UITouch`](/documentation/UIKit/UITouch) instances that represent the touches for the ending phase of the event represented by `event`. For touches in a view, this set contains only one touch by default. To receive multiple touches, you must set the view’s [`isMultipleTouchEnabled`](/documentation/UIKit/UIView/isMultipleTouchEnabled) property to <doc://com.apple.documentation/documentation/Swift/true>.

`event`

The event to which the touches belong.

## Discussion

UIKit calls this method when a finger or Apple Pencil is no longer touching the screen. Many UIKit classes override this method and use it to clean up state involved in the handling of the corresponding touch events. The default implementation of this method forwards the message up the responder chain. When creating your own subclasses, call `super` to forward any events that you don’t handle yourself, like in the following code.

```swift
super.touchesEnded(touches, with: event)
```

If you override this method without calling super (a common use pattern), you must also override the other methods for handling touch events, even if your implementations do nothing.

> Note:
> In iOS 17, Messages allows you to interactively resize iMessage apps with a vertical pan gesture. Messages handles any conflicts between resize gestures and your custom gestures. If your app uses manual touch handling, override those methods in your app’s ``doc://com.apple.uikit/documentation/UIKit/UIView``. You can either change your manual touch handling code to use a gesture recognizer instead, or your ``doc://com.apple.uikit/documentation/UIKit/UIView`` can override ``doc://com.apple.uikit/documentation/UIKit/UIGestureRecognizerDelegate/gestureRecognizerShouldBegin(_:)`` and return NO when your iMessage app doesn’t own the gesture.

---

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)