【问题标题】:Box doesn't capture key events in Compose DesktopBox 不会在 Compose Desktop 中捕获关键事件
【发布时间】:2021-08-07 16:44:09
【问题描述】:
当TextField 聚焦时打印键,但当Box 本身聚焦时不打印。
Box(
modifier = Modifier.onKeyEvent {
println(it.key)
false
}.fillMaxSize().focusable()
) {
val fieldValue = remember { mutableStateOf(TextFieldValue("")) }
TextField(
value = fieldValue.value,
onValueChange = { fieldValue.value = it }
)
}
【问题讨论】:
标签:
kotlin
android-jetpack-compose
compose-desktop
【解决方案1】:
受this 回答的启发,我更改了代码。
当您单击Box 时,您会从TextField 中移除焦点,但不会将其交给Box。这必须手动完成。
val focusRequester = FocusRequester()
Box(
modifier = Modifier.onKeyEvent {
println(it.key)
false
}.fillMaxSize()
.focusRequester(focusRequester)
.focusable()
.clickable (
interactionSource = remember { MutableInteractionSource() },
indication = null // To disable the ripple effect
) {
focusRequester.requestFocus()
}
) {
val fieldValue = remember { mutableStateOf(TextFieldValue("")) }
TextField(
value = fieldValue.value,
onValueChange = { fieldValue.value = it }
)
}