Windows10下Kotlin Compose Desktop TextField唤起触摸键盘问题
解决Compose Desktop在Windows10平板模式下TextField不弹出软键盘的问题
针对你在Pipo触摸屏电脑上遇到的问题,结合已开启系统自动显示触摸键盘的设置,给出以下排查和解决建议:
升级Compose Desktop依赖版本
旧版本的Compose Desktop存在触摸事件处理不完善的bug,建议将依赖升级到最新稳定版(如1.5.x及以上),确保框架对Windows触摸交互的支持更完善。修改build.gradle.kts中的compose版本:plugins { kotlin("jvm") version "1.9.20" id("org.jetbrains.compose") version "1.5.11" }手动触发触摸键盘并请求焦点
Compose Desktop默认不会自动调用Windows触摸键盘,可在TextField获得焦点时手动启动系统触摸键盘程序TabTip.exe,同时配合焦点请求器确保输入框获取焦点:val focusRequester = remember { FocusRequester() } var stationName by remember { mutableStateOf(TextFieldValue("")) } TextField( label = { Text("Enter Computer Station name") }, value = stationName, singleLine = true, onValueChange = { stationName = it }, modifier = Modifier.focusRequester(focusRequester), onFocusChanged = { state -> if (state.isFocused) { // 仅在Windows平台执行 if (System.getProperty("os.name").lowercase().contains("windows")) { runCatching { Runtime.getRuntime().exec("cmd /c start TabTip.exe") }.onFailure { it.printStackTrace() } } } } )标记应用为触摸优化应用
Windows可能未将Compose Desktop应用识别为触摸优先应用,可在打包配置中添加触摸兼容属性,让系统更优先触发触摸键盘:compose.desktop { application { mainClass = "MainKt" nativeDistributions { windows { manifest { attributes["CompatibleWithTouch"] = "true" attributes["DPIAware"] = "true" } } } } }排查系统层面问题
- 测试系统自带应用(如记事本、Edge浏览器)的触摸键盘是否正常弹出,若其他应用也无法弹出,需更新Pipo设备的触摸驱动或重置Windows输入设置;
- 确认平板模式完全激活:检查任务栏是否自动隐藏,系统是否正确切换到触摸优先模式,必要时重启设备。
内容的提问来源于stack exchange,提问作者Jesser
相关产品推荐
相关产品推荐

