【问题标题】: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 }
    )
}

【问题讨论】:

  • 查看我的answer 类似问题

标签: 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 }
    )
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-12
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多