【问题标题】:UWP - Onscreen keyboard closes when switching to another textboxUWP - 切换到另一个文本框时屏幕键盘关闭
【发布时间】:2018-05-10 22:55:39
【问题描述】:

我的 uwp 应用程序遇到了一个奇怪的错误(?)。

我有一个页面,其中包含多个用于用户输入的文本框,每个文本框都将InputScope 设置为数字,然后按预期以平板电脑模式打开键盘。但是,如果您点击下一个框,键盘将关闭,需要再次点击才能打开键盘。如果用户点击标签来切换框,也会发生这种情况。

我认为这与Focus() 事件在前一个文本框触发失去焦点事件之前触发有关,但我不确定如何覆盖该行为。

如何防止屏幕键盘关闭,同时确保仍保持正确的输入范围?

编辑:经过进一步调查,这个问题似乎几乎是随机的。有时您可以移动到不同的框并保持打开状态,但有时它每次都会关闭键盘。

【问题讨论】:

  • 您找到解决方案了吗?我仍然遇到问题。

标签: c# uwp


【解决方案1】:

此问题已在 2018 年 4 月 30 日发布的 Windows 10 版本 1803 中与其他一些问题一起解决。

【讨论】:

  • 这个。我遇到同样的问题已经有一段时间了,将 Windows 更新到最新的(在撰写本文时)版本已经解决了这个问题。
【解决方案2】:

您可以尝试使用作为屏幕键盘容器的 InputPane。例如,在窗格试图隐藏时做一个小的延迟,然后检测再次显示窗格的尝试(并取消挂起的隐藏)。

    myPane = InputPane.GetForCurrentView();
    myPane.Showing += myShowingHandler();
    myPane.Hiding += myHidingHandler();

至少,您可以在显示的窗格中接收到底层屏幕区域的大小,以便您可以在 UI 上放置一个占位符(边距或虚拟网格),以防止它在键盘显示/隐藏时上下跳跃。

【讨论】:

  • 感谢您的回复。我不担心 ui 跳来跳去,我需要键盘在本应保持打开状态时保持打开状态。
  • @Takarii,快速提问:您的文本框的“IsTabStop”属性值是多少?特别是那些不显示键盘的人?另一种选择是在 myHidingHandler() 中调用 myPane.TryShow()。看到效果了吗?
  • 所有盒子都完全一样。只有在一个接一个地选择另一个文本框时才会出现此问题。如果我点击其他任何地方,例如另一个控件或空格,则要选择的下一个文本框会按预期打开键盘。我尝试将 tabstop 更改为 false ,这意味着键盘永远不会打开。我查看了事件顺序,焦点事件在新控件上触发,然后 lostfocus 事件在旧控件上触发。因此,我认为如果旧焦点是文本框以及新焦点,我的解决方案需要考虑防止键盘关闭。
【解决方案3】:

我在我的 WP 上尝试过您的案例,但无法重现您的体验:

当我点击其他文本框时,键盘保持打开状态,我可以继续输入。 当我点击某个空白处时,键盘会按预期隐藏。

您的设备没有连接键盘吗?

【讨论】:

  • 我遇到的这个问题可能不存在于 windows phone 版本中,并且可能特定于平板电脑模式。
  • 不,没有连接键盘。该设备是平板电脑
  • 很遗憾地告诉您,但我在 Windows 平板电脑上也遇到过类似的错误行为。切换到其他文本框时键盘隐藏,反之亦然。此外,在键入时,某些按下的按键确实会将字符插入到 TextBox 中。 “打字”中有几个设置,但似乎没有一个对 UWP 应用程序中的行为有影响。最后一件事就是向 MS 提交错误。
猜你喜欢
  • 1970-01-01
  • 2011-09-02
  • 2019-01-10
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多