【问题标题】:GWT: Textbox doesn't show Cursor on IpadGWT:文本框在 Ipad 上不显示光标
【发布时间】:2020-06-07 02:28:00
【问题描述】:

我正在尝试实现一个可以使用 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);

//      }
    }

【问题讨论】:

    标签: ipad gwt textbox focus


    【解决方案1】:

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

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

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

    【讨论】:

    • 所以如果我删除调度程序我有机会吗?我以前试过这个,但大部分时间都没有工作。我不明白的是为什么它有时会起作用?
    • 嗯,可能我说的不太对,只需要先在页面上进行交互。因此,如果您已经进行了交互,那么它将允许后续交互。我还没有测试过这个理论。如果你测试它,请告诉我。
    • 好的,我试过了,现在可以了。谢谢你。
    • 仅当我使用 PushButton 而不是普通 Button 时,它才不起作用。有谁知道我该如何解决这个问题?或者是否有用于空分数的 Unicode 字符?你可以在这里看到我的意思:mathetopia.ddns.net
    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多