Windows 10 uwp 即使我将焦点设置到控件上也隐藏软键盘
Windows 10 uwp hide soft keyboard even when I set focus to a control
我有一个 Windows 10 移动 uwp 应用程序,我有两个问题。
首先,我将焦点设置在应用程序中的控件上。我通过成功使用普通调用来做到这一点
Control.Focus(FocusState.Programmatic);
但是,在某些情况下这不起作用。大多数时候它确实如此,但例如,当我的页面加载时,我试图在其中一个字段中设置初始焦点,但它不起作用。我在两个地方试过这个电话。首先,在页面的构造函数中,在 InitializeComponenets 之后以及覆盖 onNavigatedTo 方法中。调用它的最佳位置在哪里?为什么它似乎不起作用的一些原因是什么,特别是在实例化新页面时?
其次,与设置焦点有关。我的 UI 上有一个文本框,我使用上面列出的相同的程序化焦点调用设置了控件。但是,软(屏幕上)键盘会在发生这种情况时显示。当我以编程方式设置焦点时,我不希望它显示,但如果用户 select 是该字段,它就会显示。场景是我有一个条形码扫描仪。当页面加载时,我将代码中的焦点设置到文本框,因此我可以根据条形码扫描仪结果从代码中设置文本框中的文本。用户几乎不需要在该字段中键入内容。因此,我不需要或不想让键盘显示和占用空间。在极少数情况下,我确实允许他们仍然手动输入文本,例如,在条形码无法读取的情况下。然后他们会 select 控件(即使它可能已经以编程方式获得焦点)应该再次设置焦点,而不是光标、触摸或其他东西,然后我想显示软键盘。
最好的方法是什么?
谢谢!
我认为调用 Focus()
的最佳位置是在您试图关注的同一控件的 Loaded
事件处理程序中。当此控件完全加载时,意味着它已准备好进行交互,包括聚焦。
至于防止on-screen键盘出现,TextBox
class有PreventKeyboardDisplayOnProgrammaticFocus
属性。尝试将其设置为 true
,这应该可以解决您的问题。
至于聚焦于 TextBox 之外的任何其他内容对我来说无论如何都不起作用,我找到了一个很好的解决方案:
我打过:
using Windows.UI.ViewManagement;
InputPane.GetForCurrentView().TryHide();
并且键盘被隐藏。
我有一个 Windows 10 移动 uwp 应用程序,我有两个问题。
首先,我将焦点设置在应用程序中的控件上。我通过成功使用普通调用来做到这一点
Control.Focus(FocusState.Programmatic);
但是,在某些情况下这不起作用。大多数时候它确实如此,但例如,当我的页面加载时,我试图在其中一个字段中设置初始焦点,但它不起作用。我在两个地方试过这个电话。首先,在页面的构造函数中,在 InitializeComponenets 之后以及覆盖 onNavigatedTo 方法中。调用它的最佳位置在哪里?为什么它似乎不起作用的一些原因是什么,特别是在实例化新页面时?
其次,与设置焦点有关。我的 UI 上有一个文本框,我使用上面列出的相同的程序化焦点调用设置了控件。但是,软(屏幕上)键盘会在发生这种情况时显示。当我以编程方式设置焦点时,我不希望它显示,但如果用户 select 是该字段,它就会显示。场景是我有一个条形码扫描仪。当页面加载时,我将代码中的焦点设置到文本框,因此我可以根据条形码扫描仪结果从代码中设置文本框中的文本。用户几乎不需要在该字段中键入内容。因此,我不需要或不想让键盘显示和占用空间。在极少数情况下,我确实允许他们仍然手动输入文本,例如,在条形码无法读取的情况下。然后他们会 select 控件(即使它可能已经以编程方式获得焦点)应该再次设置焦点,而不是光标、触摸或其他东西,然后我想显示软键盘。
最好的方法是什么?
谢谢!
我认为调用 Focus()
的最佳位置是在您试图关注的同一控件的 Loaded
事件处理程序中。当此控件完全加载时,意味着它已准备好进行交互,包括聚焦。
至于防止on-screen键盘出现,TextBox
class有PreventKeyboardDisplayOnProgrammaticFocus
属性。尝试将其设置为 true
,这应该可以解决您的问题。
至于聚焦于 TextBox 之外的任何其他内容对我来说无论如何都不起作用,我找到了一个很好的解决方案:
我打过:
using Windows.UI.ViewManagement;
InputPane.GetForCurrentView().TryHide();
并且键盘被隐藏。