在 Uno Platform 中文本框失去焦点后,如何防止 Android 中的软件键盘隐藏?
How to keep the software keyboard in Android from hiding after a TextBox loses focus in Uno Platform?
我有一个 TextBox
和一个 Button
。单击按钮时,TextBox
失去焦点并且键盘隐藏。单击按钮时如何防止键盘隐藏?
我首先想到使用 AllowFocusOnInteraction
,但目前 Android 不支持。
Uno Platform 在这里使用 Android 输入行为,因此当输入失去焦点时,程序化键盘会自动消失。但是,如果您想立即再次显示它,您可以从按钮 Click
处理程序中再次赋予它焦点。
XAML:
<TextBox x:Name="InputBox" />
<Button Click="TestClick">Test</Button>
C#:
private void TestClick(object sender, RoutedEventArgs e)
{
InputBox.Focus(FocusState.Programmatic);
}
输入窗格开始消失,但立即再次被请求,因此几乎察觉不到。
您也可以通过编写特定于平台的代码,尝试在没有任何 TextBox
的情况下以编程方式触发软键盘。例如,This SO question 包含相当多的 Android 解决方案。通常,他们利用 INPUT_METHOD_SERVICE
并在其上调用 ShowSoftInput
。
虽然 AllowFocusOnInteraction
未实现,但 Control.IsTabStop
已实现。 IsTabStop
同样会阻止控件接收焦点。请改用 IsTabStop
。
我有一个 TextBox
和一个 Button
。单击按钮时,TextBox
失去焦点并且键盘隐藏。单击按钮时如何防止键盘隐藏?
我首先想到使用 AllowFocusOnInteraction
,但目前 Android 不支持。
Uno Platform 在这里使用 Android 输入行为,因此当输入失去焦点时,程序化键盘会自动消失。但是,如果您想立即再次显示它,您可以从按钮 Click
处理程序中再次赋予它焦点。
XAML:
<TextBox x:Name="InputBox" />
<Button Click="TestClick">Test</Button>
C#:
private void TestClick(object sender, RoutedEventArgs e)
{
InputBox.Focus(FocusState.Programmatic);
}
输入窗格开始消失,但立即再次被请求,因此几乎察觉不到。
您也可以通过编写特定于平台的代码,尝试在没有任何 TextBox
的情况下以编程方式触发软键盘。例如,This SO question 包含相当多的 Android 解决方案。通常,他们利用 INPUT_METHOD_SERVICE
并在其上调用 ShowSoftInput
。
虽然 AllowFocusOnInteraction
未实现,但 Control.IsTabStop
已实现。 IsTabStop
同样会阻止控件接收焦点。请改用 IsTabStop
。