首页 > 解决方案 > 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);

//      }
    }

标签: ipadgwttextboxfocus

解决方案


iOS 浏览器不允许以编程方式设置焦点,除非直接响应用户交互(即触摸)。我相信原因是为了防止网站无缘无故地启动虚拟键盘。

缺点是它会破坏setFocus()那些出于正当理由想要使用它的网站。您不能调用setFocus()延迟命令,因为这不算是对用户交互的直接响应。

(更准确地说,您可以调用setFocus()延迟命令,但它不会产生您发现的预期效果。)


推荐阅读