框不能捕获合成桌面中的关键事件 [英] Box doesn't capture key events in Compose Desktop

查看:17
本文介绍了框不能捕获合成桌面中的关键事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

键在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 }
    )
}

这篇关于框不能捕获合成桌面中的关键事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆