Я получил BasicTextField с VisualTransformation для ввода IBAN (он просто добавляет пробелы через определенные интервалы - «FR76 0000 0000 0000 0000 000»). Это VisualTransformation работает отлично, когда я набираю «FR76», а затем «0», он добавляет пробел автоматически.
Проблема возникает, когда я делаю ошибку: я написал «FR76 0000 0000 0000 0000 000» вместо «FR76 1111 0000 0000 0000 000», поэтому я собираюсь поместить курсор в конец «0000» и стереть его, чтобы я мог написать «1111».
Текущее решение, которое я реализовал, не позволяет мне сделать это, несмотря ни на что Да, курсор вынужден оставаться в конце BasicTextField. Что я могу сделать, чтобы это работало, НО сохранить поведение, при котором мой курсор остается в конце, если он в настоящее время находится в конце текстового поля?
Моя текущая визуальная трансформация:
visualTransformation = {
val output = when {
it.text.length it.text
else -> {
val first = it.text.substring(0, 2)
val formatRest = it.text
.substring(2)
.chunked(4)
.joinToString(" ")
"$first $formatRest"
}
}
TransformedText(
AnnotatedString(output),
object : OffsetMapping {
override fun originalToTransformed(offset: Int): Int = output.length
override fun transformedToOriginal(offset: Int): Int = it.text.length
}
)
},
Подробнее здесь: https://stackoverflow.com/questions/783 ... r-position