在 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