单击 Compose Multiplatform 中的其他位置后如何清除 BasicTextField 的焦点?
How to clear focus of BasicTextField upon clicking somewhere else in Compose Multiplatform?
我在桌面版 Jetbrains Compose Multiplatform 中有一个 BasicTextField
。当我单击它时,TextField 获得焦点并变得可编辑。但是,当我在我的应用程序中单击其他位置时,焦点不会丢失并且该字段仍然可编辑,就像我刚刚单击它一样。
我知道这种行为是正常的并且是有意为之的。尽管如此,我希望 TextField 在用户点击其他地方时变得不集中,无论它是可点击还是不可点击的可组合项。
如何实现?
这是我过去做过的一种方法。
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)
}
我在桌面版 Jetbrains Compose Multiplatform 中有一个 BasicTextField
。当我单击它时,TextField 获得焦点并变得可编辑。但是,当我在我的应用程序中单击其他位置时,焦点不会丢失并且该字段仍然可编辑,就像我刚刚单击它一样。
我知道这种行为是正常的并且是有意为之的。尽管如此,我希望 TextField 在用户点击其他地方时变得不集中,无论它是可点击还是不可点击的可组合项。
如何实现?
这是我过去做过的一种方法。
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)
}