【问题标题】:Does TextField fireDoneEvent() to call stopEditing() in order to close the virtual keyyboard?TextField fireDoneEvent() 是否调用 stopEditing() 以关闭虚拟键盘?
【发布时间】:2016-11-05 13:43:34
【问题描述】:

我可以通过调用 textField.stopEditing 从按钮关闭虚拟键盘。但是,我希望设置 DoneListener 以在按下“搜索”或“开始”时关闭虚拟键盘。

DoneListener 触发并执行代码,但虚拟键盘保持打开状态。我尝试将 stopEditing 添加到 DoneListerer,甚至将 stopEditing 调用串行。

【问题讨论】:

  • 这应该可以。你在 done 监听器中还在做什么?通常完成会自动折叠键盘,因此如果失败,文本字段中会发生其他事情。
  • 我将 ConnectionRequest 发布到 NetworkManager 并使用 callSerially 处理响应以更新另一个 TextField。按钮执行的代码完全相同,不同的是按钮调用了textField.stopEditing方法。
  • 您是否尝试将整个连接请求调用包装在串行调用中。
  • 是的。暂时我不会使用任何特殊的 virtualKeyboard 按钮,而是依赖外部按钮。
  • 这是在哪个平台上发生的?

标签: textfield codenameone


【解决方案1】:

我刚刚在我的 Android OPO 设备上进行了尝试,它按预期工作。第二个字段什么也没做,只是第一个像冠军一样折叠键盘:

Form hi = new Form("TextTest", BoxLayout.y());
TextField other = new TextField("");
TextField ttt = new TextField("");
hi.add(ttt).add(other);
ttt.setDoneListener(e -> {
    hi.add(ttt.getText());
    hi.getContentPane().animateLayout(200);
});
hi.show(); 

【讨论】:

  • 我猜违反 EDT 会导致这个问题。在后台线程中,我正在使用 ImageIO.getImageIO().save(input, output, ImageIO.FORMAT_JPEG, width, height, QUALITY);
  • 今天的更新为我修复了 ios7,但没有修复 Android
  • 我们需要一个测试用例,我知道史蒂夫正在处理文本字段中的一个问题,但我不确定这是否是同一个问题,因为症状不同。
  • 我在优先级为 1 的后台线程中遇到 EDT 违规。 ByteArrayInputStream input = new ByteArrayInputStream(data); ByteArrayOutputStream 输出 = 新的 ByteArrayOutputStream(); -> ImageIO.getImageIO().save(输入、输出、ImageIO.FORMAT_JPEG、宽度、高度、质量);数据 = output.toByteArray();替换为 -> Image image = EncodedImage.create(data).scaled(width, height); data = EncodedImage.createFromImage(image, true).getImageData();仍然得到一个EDT。 EncodedImage 依赖于 ImageIO。 ImageIO 依赖于 Display。 ImageIO中的缓存会不会有问题?
  • 违反 EDT 可能会导致奇怪的问题,但您描述的似乎完全不同。
猜你喜欢
  • 2020-03-26
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多