Capturer et relâcher la mise au point

Dans les modes d'interaction spécialisés (comme un canevas de dessin intégré, une surface de manette de jeu ou une boîte de dialogue de saisie modale), votre application peut avoir besoin de verrouiller temporairement la sélection sur un seul composant et d'empêcher la touche Tabulation ou les touches directionnelles de quitter la navigation.

Capturer le focus

Pour capturer la sélection, appelez captureFocus() sur un FocusRequester :

val focusRequester = remember { FocusRequester() }

Box(
    modifier = Modifier
        .focusRequester(focusRequester)
        .focusable()
        .onFocusChanged { focusState ->
            if (focusState.isFocused) {
                focusRequester.captureFocus()
            }
        }
)

Lorsque le focus est capturé, les touches de navigation standards (comme Tab) ne déplacent pas le focus vers les composants voisins.

Priorité de la version

Pour quitter l'état de capture et rétablir la navigation normale du curseur dans l'UI, appelez freeFocus() :

IconButton(
    onClick = {
        focusRequester.freeFocus()
    }
) {
    Icon(Icons.Default.Close, contentDescription = "Exit focus lock")
}