当 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 }
)
}
最佳答案
灵感来自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 }
)
}
关于kotlin - Box 不捕获 Compose Desktop 中的关键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68694338/