From b4d11059c09da3d9a93cd1fcb25f174997090871 Mon Sep 17 00:00:00 2001 From: kingzcheung Date: Wed, 26 Aug 2026 17:31:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(keyboard):=20=E4=BF=AE=E5=A4=8D=E9=95=BF?= =?UTF-8?q?=E6=8C=89=E5=90=8E=E7=82=B9=E5=87=BB=E4=BA=8B=E4=BB=B6=E4=B8=A2?= =?UTF-8?q?=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 长按结束后必须重置 hasTriggeredLongPress 标志,否则会吞掉下一次点击事件, 导致退格键等按键出现吃键现象。 同时修复了滑动检测逻辑,不再使用 swipeDetected 抑制点击事件, 因为 swipeDetected 由 5dp 位移触发而 dragActivated 由更大的 touch slop 触发,在 5dp~touchSlop 区间若被 swipeDetected 吞掉点击且 drag 未激活时,会造成快速打字漏键的问题。 feat(version): 更新版本号至 2.7.2 更新 versionCode 至 20260828,versionName 至 2.7.2 chore(deps): 更新子项目依赖状态 --- app/build.gradle.kts | 4 ++-- .../main/java/com/kingzcheung/xime/ui/keyboard/KeyButton.kt | 5 +++++ .../java/com/kingzcheung/xime/ui/keyboard/KeyboardLayout.kt | 6 +++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 29bf4bd1..e0674f64 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -43,8 +43,8 @@ android { applicationId = "com.kingzcheung.xime" minSdk = 28 targetSdk = 35 - versionCode = 20260827 - versionName = "2.7.1" + versionCode = 20260828 + versionName = "2.7.2" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/kingzcheung/xime/ui/keyboard/KeyButton.kt b/app/src/main/java/com/kingzcheung/xime/ui/keyboard/KeyButton.kt index e8411359..198c34dd 100644 --- a/app/src/main/java/com/kingzcheung/xime/ui/keyboard/KeyButton.kt +++ b/app/src/main/java/com/kingzcheung/xime/ui/keyboard/KeyButton.kt @@ -1038,6 +1038,11 @@ fun SwipeableIconKeyButton( isPressed = false currentOnRelease?.invoke() isLongPress = false + // 长按结束后必须重置:onTap 不会在长按后触发, + // 若残留 true 会吞掉下一次点击(退格键吃键)。 + // onDragEnd/onDragCancel 虽也重置,但仅 drag 激活时触发, + // 长按无位移(drag 未激活)时走不到那里。 + hasTriggeredLongPress = false } }, onTap = { diff --git a/app/src/main/java/com/kingzcheung/xime/ui/keyboard/KeyboardLayout.kt b/app/src/main/java/com/kingzcheung/xime/ui/keyboard/KeyboardLayout.kt index 315567d3..185a92f9 100644 --- a/app/src/main/java/com/kingzcheung/xime/ui/keyboard/KeyboardLayout.kt +++ b/app/src/main/java/com/kingzcheung/xime/ui/keyboard/KeyboardLayout.kt @@ -1798,7 +1798,11 @@ fun SwipeableKeyButtonLandscape( if (selected != null) { currentOnLongPressSelect?.invoke(selected) } - } else if (!swipeDetected && !dragActivated) { + } else if (!dragActivated) { + // 不能用 swipeDetected 抑制点击:swipeDetected 由 5dp 位移触发, + // 而 dragActivated 由 touch slop(更大)触发。5dp~touchSlop 区间 + // 若被 swipeDetected 吞掉点击且 drag 未激活,会造成快速打字漏键。 + // 5dp 位移只用于取消长按(longPressJob)。 currentOnClick() } }