代码之家  ›  专栏  ›  技术社区  ›  Zubair Rana

如何防止UWP中的软输入面板自动关闭?

  •  -1
  • Zubair Rana  · 技术社区  · 6 年前

    在windows 10平板电脑上使用UWP应用程序时,我遇到了一个意外的键盘显示和隐藏行为。

    经过一次又一次的仔细测试,我注意到当您关注输入框并打开键盘时,会出现此问题。现在,聚焦下一个输入需要调整布局,这样它就不会被键盘隐藏。当您尝试聚焦下一个元素时,默认情况下先前打开的键盘会隐藏,现在我无法打开键盘,直到这个新的输入框失去焦点并再次手动获得焦点。

    所以为了控制这个问题,我想防止每次我将焦点切换到新的文本框时自动隐藏和显示键盘。一旦页面加载(已经找到使用InputPane的解决方案),它应该打开键盘,并且只能通过单击取消(x)按钮来隐藏。

    请查看此视频以清楚地了解问题。 https://www.dropbox.com/s/1c876uwytywio1t/Soft%20Keyboard%20Issue.mp4?dl=0

    如果其他人也面临这个问题,请投票表决这个建议。 https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/34170142-inputpane-does-not-open-when-focus-is-shifted-to-n

    2 回复  |  直到 6 年前
        1
  •  1
  •   Zubair Rana    6 年前

    2018年4月30日发布的windows 10版本1803部分解决了此问题。在此版本中,当焦点从一个输入元素转移到另一个输入元素时,InputPane不会反复隐藏和显示。

        2
  •  0
  •   Yury Schkatula    6 年前

    您可以尝试在页面底部放置一个水平拉伸的占位符控件(比如StackPanel),然后使其与屏幕键盘的大小相同。这可以防止不受控制的自动隐藏触发器被触发(至少我在UWP移动应用程序上做到了这一点):

    // on the window initialization, remember the input pane
    this._inputPane = InputPane.GetForCurrentView()
    // then, subscribe to the events
    _inputPane.Showing = (sender, args) =>
    {
        args.EnsuredFocusedElementInView = true; // skip default vertical-shift behavior
        this._placeholderPane.Height = args.OccludedRect.Height;
    }
    
    _inputPane.Hiding = (sender, args) =>
    {
        this._placeholderPane.Height = 0;
    }
    

    希望它在Win10桌面上的帮助与在mobile one上的帮助相同。

    P、 是的,最初占位符窗格为零高度并折叠。

    推荐文章