mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-02-23 15:34:06 +01:00
🎨 Improve keyboard pop on HarmonyOS (Pura X)
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
354124c42f
commit
df4c6a63e8
2 changed files with 13 additions and 1 deletions
|
|
@ -14,7 +14,7 @@ import {hideElements} from "../../protyle/ui/hideElements";
|
|||
import {softEnter} from "../../protyle/wysiwyg/enter";
|
||||
import {isInAndroid, isInEdge, isInHarmony} from "../../protyle/util/compatibility";
|
||||
import {tabCodeBlock} from "../../protyle/wysiwyg/codeBlock";
|
||||
import {callMobileAppShowKeyboard, canInput} from "./mobileAppUtil";
|
||||
import {callMobileAppShowKeyboard, canInput, keyboardLockUntil} from "./mobileAppUtil";
|
||||
|
||||
let renderKeyboardToolbarTimeout: number;
|
||||
let showUtil = false;
|
||||
|
|
@ -471,6 +471,12 @@ export const hideKeyboardToolbar = () => {
|
|||
};
|
||||
|
||||
export const activeBlur = () => {
|
||||
const now = Date.now();
|
||||
if (now < keyboardLockUntil) {
|
||||
console.warn(`activeBlur blocked by lock (remaining: ${keyboardLockUntil - now}ms)`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (window.JSAndroid && window.JSAndroid.hideKeyboard) {
|
||||
window.JSAndroid.hideKeyboard();
|
||||
} else if (window.JSHarmony && window.JSHarmony.hideKeyboard) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
import {hasClosestByAttribute, hasClosestByClassName} from "../../protyle/util/hasClosest";
|
||||
|
||||
export let keyboardLockUntil = 0;
|
||||
|
||||
export const callMobileAppShowKeyboard = () => {
|
||||
// 某些机型(比如鸿蒙 Pura X)在弹起键盘后会立即触发 activeBlur 导致键盘被关闭,所以在主动唤起键盘时锁定一段时间,禁止 activeBlur 关闭键盘
|
||||
// 每次主动唤起键盘时,锁定接下来的 300ms 不允许通过 activeBlur 关闭
|
||||
keyboardLockUntil = Date.now() + 200;
|
||||
|
||||
if (window.JSAndroid && window.JSAndroid.showKeyboard) {
|
||||
window.JSAndroid.showKeyboard();
|
||||
} else if (window.JSHarmony && window.JSHarmony.showKeyboard) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue