【问题标题】:How to clear focus of BasicTextField upon clicking somewhere else in Compose Multiplatform?单击 Compose Multiplatform 中的其他位置时如何清除 BasicTextField 的焦点?
【发布时间】:2021-12-20 08:36:55
【问题描述】:

我在 Jetbrains Compose Multiplatform for desktop 中有一个 BasicTextField。当我单击它时,TextField 获得焦点并变为可编辑。但是,当我单击应用程序中的其他位置时,焦点不会丢失,并且该字段仍然可以编辑,就像我刚刚单击它一样。

我知道这种行为是正常且有意的。尽管如此,当用户点击其他地方时,我希望 TextField 变得没有焦点,无论它是可点击的还是不可点击的组合。

我如何做到这一点?

【问题讨论】:

    标签: kotlin android-jetpack-compose jetbrains-compose compose-multiplatform


    【解决方案1】:

    这是我过去做过的一种方式。

     val keyboardController = LocalSoftwareKeyboardController.current
     val focusManager = LocalFocusManager.current
     val interactionSource = remember { MutableInteractionSource() }
    

    然后我让我的父布局可点击。

    Box(modifier = Modifier
           .clickable(
               interactionSource = interactionSource,
               indication = null    // this gets rid of the ripple effect
           ) {
               keyboardController?.hide()
               focusManager.clearFocus(true)
           }
    

    【讨论】:

    • 谢谢!单击另一个可点击时仍然无法清除焦点,但它对我来说已经足够好了:)
    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2021-08-24
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多