ipad - GWT:文本框在 Ipad 上不显示光标
问题描述
我正在尝试实现一个可以使用 GWT 显示分数的文本框。因此,我有一个 Canvas,我可以绘制我想要的东西并接收 KeyEvents 和 MouseEvents。
但是在 Ipad(Safarie 和 Chrome)上,软件键盘没有显示,所以我创建了一个 Composite 并将 Canvas 与一个 Textbox 组合在一起,女巫在 Canvas 上的每个键或鼠标事件后获得焦点。
但是软键盘并非每次都显示,所以我尝试了一下,可以看到,文本框似乎获得了焦点(它得到了一个蓝色边框),但并不总是显示光标。
这不会发生在我的笔记本上。
聚焦和显示光标之间有什么区别吗?
我试过了:
- 设置光标位置
- 设置文本框的文本。
任何帮助将不胜感激,克里斯托夫
public void setFocus(boolean b) {
// if (hasFocus) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
public void execute () {
t.setFocus(b);
}
});
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
public void execute () {
box.setFocus(true);
box.setText("x");
box.setCursorPos(0);
// box.setVisible(false);
// box.setVisible(true);
}
});
// t.setFocus(b);
// box.setFocus(b);
// }
}
解决方案
iOS 浏览器不允许以编程方式设置焦点,除非直接响应用户交互(即触摸)。我相信原因是为了防止网站无缘无故地启动虚拟键盘。
缺点是它会破坏setFocus()
那些出于正当理由想要使用它的网站。您不能调用setFocus()
延迟命令,因为这不算是对用户交互的直接响应。
(更准确地说,您可以调用setFocus()
延迟命令,但它不会产生您发现的预期效果。)
推荐阅读
- firefox - 在 Firefox 的固定选项卡上运行 javascript
- c++ - 我可以从变量中获取对类对象的引用吗
- arrays - 将 Outlook 邮件转换为 Byte[]
- .net-core - DotNet Core 中的条件逻辑 OR 运算符
- powershell - 如何从 MyModule.psm1 中检索 MyModule.psd1 哈希值的值,例如 RootModule、ModuleVersion 和 HelpInfoURI?
- python - 为什么这种获取http客户端的方式会失败?
- java - 带有 jacoco 插件的 SonarQube 覆盖率显示百分比为零,但可以看到单元测试的数量
- angular - 如何从一个ts文件中获取变量到角度的所有其他ts文件中
- asp.net - 有人知道如何比较 daterangepicker 中的日期吗?
- ios - (iOS/Swift) 带有路径变量参数的简单 GET 请求