---
title: "awaitLongPressOrCancellation"
description: "Waits for a long press by examining [pointerId].

If that [pointerId] is raised (that is, the user lifts their finger), but another finger
([PointerId]) is down at that time, another pointer will be chosen as the lead for the gesture,
and if none are down, `null` is returned.


Example Usage:"
type: "function"
---

<div class='type'>Function</div>


<a id='references'></a>
<div class='sourceset sourceset-common'>Common</div>


```kotlin
suspend fun AwaitPointerEventScope.awaitLongPressOrCancellation(
    pointerId: PointerId
): PointerInputChange?
```


Waits for a long press by examining `pointerId`.

If that `pointerId` is raised (that is, the user lifts their finger), but another finger
(`PointerId`) is down at that time, another pointer will be chosen as the lead for the gesture,
and if none are down, `null` is returned.


Example Usage:

#### Returns

| | |
| --- | --- |
|  | The latest `PointerInputChange` associated with a long press or `null` if all pointers are raised before a long press is detected or another gesture consumed the change. |




## Code Examples
### AwaitLongPressOrCancellationSample
```kotlin
/** Simple [awaitLongPressOrCancellation] demo. */
@Composable
fun AwaitLongPressOrCancellationSample() {
    var count by remember { mutableStateOf(0) }
    Column {
        Text("Long Press to increase count. Long Press count: $count")
        Box(
            Modifier.fillMaxSize()
                .wrapContentSize(Alignment.Center)
                .size(192.dp)
                .pointerInput(Unit) {
                    awaitEachGesture {
                        val down = awaitFirstDown(requireUnconsumed = false)
                        awaitLongPressOrCancellation(down.id)?.let { count++ }
                    }
                }
                .clipToBounds()
                .background(Color.Blue)
                .border(BorderStroke(2.dp, Color.Black))
        )
    }
}
```

