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

时间:2018-05-06 11:44:20

标签: c# uwp windows-10-universal uwp-xaml soft-keyboard

我正面临键盘的意外行为,显示并隐藏在使用Windows 10的平板电脑上工作的UWP应用程序中。

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

因此,为了控制此问题,我希望每当我将焦点切换到新文本框时,都要阻止自动隐藏和显示键盘。一旦页面加载(已经找到使用InputPane的解决方案)并且隐藏应该只通过单击cancel(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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以尝试在页面底部放置一个水平拉伸的占位符控件(比如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桌面上的帮助与在移动设备上一样。

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