KeyBoards
KeyBoards 通过默认输入法往已获焦点的文本框里输入。这是可选增强,不是默认输入方案。
一般优先顺序:
- 无障碍
UiObject.setText - 不行再用剪贴板:
System.setClip+paste - 业务明确需要更接近真人输入时,再用本页的
KeyBoards
使用输入法前必须检查状态:先 canInput()(或先看 isEnabled())。状态不对时要提示用户去启用并设为默认输入法,不要静默失败。
先按 输入法设置 设为默认。和 Hid 一起用时,点、滑走硬件,打字走输入法。
if (!KeyBoards.canInput()) {
FloatDialogs.toast('请将 DeekeScript 输入法设为默认后再试');
KeyBoards.showInputMethodPicker();
} else {
KeyBoards.input('文本框新增内容');
}| 场景 | 建议 |
|---|---|
| 普通填表、改文案 | 优先 setText / 剪贴板 |
| 平台对自动化改文本较严、且已设好输入法 | 再用输入法(先 canInput()) |
| 框不能编辑、没有焦点 | 无障碍节点操作;不要硬调输入法 |
| 方法 | 作用 |
|---|---|
canInput() | 是否已是默认输入法 |
isEnabled() | 是否已启用(不等于能输入) |
showInputMethodPicker() | 按状态带到启用或选择页 |
input(info) | 在焦点框末尾追加 |
delete() | 删一个字符 |
hide() | 收起键盘 |
pressKey(key) | 回车、方向键等 |
pressEnter() / pressTab() / pressSpace() | 常用键快捷方法 |
canInput()
返回: {boolean} 当前是否为默认输入法,为 false 时不能输入
if (KeyBoards.canInput()) {
KeyBoards.input('文本框新增内容');
}isEnabled()
返回: {boolean} 输入法是否已启用
已启用但未设为默认时这里是 true,canInput() 仍是 false。
if (!KeyBoards.isEnabled()) {
KeyBoards.showInputMethodPicker();
}showInputMethodPicker()
返回: {boolean} 已经是默认输入法则 true;否则打开相应页面并返回 false
- 已是默认:直接
true - 未启用:跳到启用页
- 已启用未默认:弹出输入法选择
if (!KeyBoards.showInputMethodPicker()) {
System.sleep(2000);
if (KeyBoards.canInput()) {
console.log('输入法已设置为默认');
}
}input(info)
参数:
info {string}要追加的文本
返回: {boolean} 指令是否发出。框没有焦点时也可能是 true,但字不会出现
先点进输入框,确认有焦点再调。内容加在已有文字后面,不会清空。
KeyBoards.input('文本框新增内容');delete()
返回: {boolean} 删除指令是否发出。框已经空了也会返回 true
一次只删一个字符。要清空就先读长度,再循环调用。
KeyBoards.delete();hide()
返回: {boolean} 是否收起键盘
KeyBoards.hide();pressKey(key)
参数:
key {string|number}按键名(如"ENTER")或KeyBoards.KEYCODE.ENTER
返回: {boolean} 是否发出
只能发文本相关键。HOME、BACK、POWER 等系统键发不出去,用 Gesture 或 Hid。
名称不区分大小写:ENTER、DEL / DELETE、TAB、SPACE、UP、DOWN、LEFT、RIGHT、CENTER、ESCAPE / ESC、FORWARD_DEL、MOVE_HOME、MOVE_END、PAGE_UP、PAGE_DOWN。
KeyBoards.pressKey('ENTER');
KeyBoards.pressKey('SPACE');
KeyBoards.pressKey(KeyBoards.KEYCODE.ENTER);pressEnter()
返回: {boolean} 是否发出回车,等同 pressKey('ENTER')
KeyBoards.pressEnter();pressTab()
返回: {boolean} 是否发出 Tab,等同 pressKey('TAB')
KeyBoards.pressTab();pressSpace()
返回: {boolean} 是否发出空格,等同 pressKey('SPACE')
KeyBoards.pressSpace();