es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ImeAction mueve el cursor al inicio de un TextField.

Cuando hago clic en “Siguiente” ImeAction, la posición del cursor se va a una posición recordada anteriormente (es decir, si alguna vez has establecido manualmente una posición del cursor) para el nuevo TextField seleccionado. Si no había ninguna, entonces el cursor salta al inicio, aunque el TextField no esté vacío. Esperaba que el cursor siempre estuviera al final, cuando se obtuviera el foco a través de ImeAction.

Código de ejemplo (para simplificar, mantengo los estados mutables aquí mismo, sin usar ViewModel):

@Composable
fun ImeActionNoFunciona() {
    val focusRequester = remember { FocusRequester() }
    Column {
        var value1 by rememberSaveable { mutableStateOf("Algún valor 1") }
        TextField(
            value = value1,
            onValueChange = { value1 = it },
            modifier = Modifier.fillMaxWidth(),
            keyboardActions = KeyboardActions {
                focusRequester.requestFocus()
            },
            singleLine = true
        )

        var value2 by rememberSaveable { mutableStateOf("Algún valor 2") }
        TextField(
            value = value2,
            onValueChange = { value2 = it },
            modifier = Modifier
                .fillMaxWidth()
                .focusRequester(focusRequester),
            singleLine = true
        )
    }
}

Versión de Compose 1.0.5

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema reportado es que cuando se hace clic en “Next” ImeAction en un TextField, la posición del cursor va a una posición previamente recordada o al inicio del TextField si no se recuerda ninguna posición, en lugar de siempre estar al final cuando se obtiene el enfoque a través de ImeAction.

    El código de muestra proporcionado demuestra el problema. Se crean dos TextFields, y cuando se mueve el enfoque del primer TextField al segundo utilizando “Next” ImeAction, la posición del cursor en el segundo TextField salta a una posición previamente recordada o al inicio del TextField.

    Este es un error en la versión 1.0.5 de Compose. Aún no hay soluciones conocidas disponibles para este problema, pero se espera que se solucione en una versión futura.

Comments are closed.