Page 1 of 1

Wie verbrauche ich Touch -Events in Jetpack komponieren, um Kinderklicks zu verhindern?

Posted: 10 Feb 2025, 09:22
by Guest
Ich versuche, alle Klick -Ereignisse auf der übergeordneten Ebene in Jetpack komponieren und zu konsumieren, damit untergeordnete Komponisten (wie eine Schaltfläche) keine Klicks erhalten. Aber auch nach dem Anruf conseum () in AwaitPoInterEventsCope erhält das Kind das Klick -Ereignis.

Code: Select all

@Composable
fun ParentConsumesClick() {
Box(
modifier = Modifier
.fillMaxSize()
.pointerInput(Unit) {
awaitPointerEventScope {
while (true) {
val event = awaitPointerEvent()
Log.d("Click", "Consumed in Parent")
event.changes.forEach { it.consume() } // Consume touch event
}
}
}
.background(Color.Gray),
contentAlignment = Alignment.Center
) {
Button(onClick = { Log.d("Click", "Child clicked") }) {
Text("Click Me")
}
}
}
< /code>
 Erwartete Verhalten: < /strong> < /p>

[*] Klicken Sie auf irgendwo im Feld im Feld "konsumiert in Eltern konsumiert "
.
[*] Die Schaltfläche Innere sollte keine Klicks empfangen (d. H." Child klickte " sollte nicht protokolliert werden).
< /ul>
Tatsächliches Verhalten: < /strong> < /p>

Code: Select all

"Consumed in Parent"
wird protokolliert (zeigt, dass der übergeordnete Elternteil das Ereignis empfängt).
< /ul>