ST意法半导体
直播中

刘慧

8年用户 1874经验值
私信 关注
[问答]

怎么解决TouchGFX键盘取消事件无法正常工作的问题呢?

我正在处理自定义板 Touchgfx 项目,我正在使用键盘小部件进行文本输入。在测试过程中,我发现键盘取消事件无法正常工作。
问题描述:
当我单击并按住其中一个键并拖出该区域时,键盘取消事件并且没有按预期发生任何事情。但是,当我再次单击任何其他或相同的键并在此键的区域中释放它时,不会再发生任何事情(在这里我希望所属字符写入文本缓冲区)。第二次按下并松开后,键盘开始正常工作。
我还在 touchgfx UI 模板的键盘示例中尝试过。示例与我描述的一样。为了更好地理解我正在观看视频。
我已经通过编辑 Keyboard.cpp 文件设法解决了这些问题,但我仍然报告此问题以澄清这是一个错误还是我对使用键盘的误解。

回帖(1)

任莉虹

2023-1-12 15:36:24
感谢您的反馈,我可能很快就将错误记为模拟器使用不当。对于那个很抱歉。我能够重现它,并且我已经进行了修复,应该可以将其纳入下一版本的 TouchGFX。
该bug在Keyboard.cpp中


  • if (key.keyId != 0)
  • {

位于第 201 行。这两行都应移动到第 220 行的正上方:


  • if (buffer)
  • {

所以代码看起来像:


  • ...
  •     Keyboard::Key key = getKeyForCoordinates(x, y);
  •     if (type == ClickEvent::PRESSED)
  •     {
  •       ;
  •     }
  •     if (type == ClickEvent::RELEASED)
  •     {
  •       if (cancelIsEmitted)
  •       {
  •         cancelIsEmitted = false;
  •       }
  •       else
  •       {
  •         if (key.keyId != 0)
  •         {
  •           if (buffer)
  •           {
  •             Unicode::UnicodeChar c = getCharForKey(key.keyId);
  • ...

举报

更多回帖

发帖
×
20
完善资料,
赚取积分