Xamarin 如何隐藏UWP应用程序';以编程方式使用键盘?

Xamarin 如何隐藏UWP应用程序';以编程方式使用键盘?,xamarin,xamarin.forms,uwp,xamarin.uwp,Xamarin,Xamarin.forms,Uwp,Xamarin.uwp,在我的UWP(Xamarin Forms)应用程序中,我有一个条形码扫描仪,每次扫描时都会将文本填入条目中。问题是,在我扫描之后,键盘会随着条目聚焦而弹出 我想知道是否有一种方法可以隐藏软键盘,而不必绑定到条目的聚焦属性来手动将条目设置为非聚焦状态。有没有办法让操作系统隐藏键盘?我不确定这是否可行。您需要创建一个依赖项服务,并收听键盘出现时调用的事件。您可以按如下方式设置依赖项服务: IKeyboard.cs(在您的PCL项目中): 公共接口IKeyboard { 事件处理程序键盘显示; 事件处

在我的UWP(Xamarin Forms)应用程序中,我有一个条形码扫描仪,每次扫描时都会将文本填入条目中。问题是,在我扫描之后,键盘会随着条目聚焦而弹出


我想知道是否有一种方法可以隐藏软键盘,而不必绑定到条目的聚焦属性来手动将条目设置为非聚焦状态。有没有办法让操作系统隐藏键盘?我不确定这是否可行。

您需要创建一个依赖项服务,并收听键盘出现时调用的事件。您可以按如下方式设置依赖项服务:

IKeyboard.cs(在您的PCL项目中):

公共接口IKeyboard
{
事件处理程序键盘显示;
事件处理程序键盘隐藏;
无效隐藏板();
}
键盘\u UWP.cs(在您的UWP项目中):

公共类键盘\u UWP:IKeyboard
{
专用输入窗格_输入窗格;
公共事件事件处理程序键盘显示;
公共事件事件处理程序键盘隐藏;
公用键盘可见性_UWP()
{
_inputPane=inputPane.GetForCurrentView();
_inputPane.Showing+=OnInputPaneShow;
_inputPane.Hiding+=OnInputPaneHiding;
}
InputPaneShow上的私有无效(InputPane发送方、InputPaneVisibilityEventArgs参数)
{
键盘显示?.Invoke(此为空);
}
InputPaneHiding上的私有无效(InputPane发送方、InputPaneVisibilityEventArgs参数)
{
键盘隐藏?.Invoke(此为空);
}
公共无效隐藏板()
{
_inputPane.TryHide();
}
}
然后在PCL中,您可以在它显示时收听:

DependencyService.Get<IKeyboard>().KeyboardShowing += OnKeyboardShowing();

private void OnKeyboardShowing(object sender, EventArgs e)
{
    if (you want to hide the keyboard)
        DependencyService.Get<IKeyboard>().HideKeyboard();
}
DependencyService.Get().KeyboardShowing+=OnKeyboardShowing();
键盘上显示的私有void(对象发送方,事件参数e)
{
如果(要隐藏键盘)
DependencyService.Get().HideKeyboard();
}

谢谢您的建议!我将对此进行测试,然后返回给您!:)那很好!谢谢尽管如此,我一直在寻找一种解决方案,它可以像调用“DependencyService.Get().HideKeyboard();”一样简单地应用,而无需在视图中编写代码,但这很好:)
public class Keyboard_UWP : IKeyboard
{
    private InputPane _inputPane;
    public event EventHandler<double> KeyboardShowing;
    public event EventHandler<EventArgs> KeyboardHiding;

    public KeyboardVisibility_UWP()
    {
        _inputPane = InputPane.GetForCurrentView();
        _inputPane.Showing += OnInputPaneShowing;
        _inputPane.Hiding += OnInputPaneHiding;
    }

    private void OnInputPaneShowing(InputPane sender, InputPaneVisibilityEventArgs args)
    {
        KeyboardShowing?.Invoke(this, null);
    }

    private void OnInputPaneHiding(InputPane sender, InputPaneVisibilityEventArgs args)
    {
        KeyboardHiding?.Invoke(this, null);
    }

    public void HideKeyboard()
    {
        _inputPane.TryHide();
    }
}
DependencyService.Get<IKeyboard>().KeyboardShowing += OnKeyboardShowing();

private void OnKeyboardShowing(object sender, EventArgs e)
{
    if (you want to hide the keyboard)
        DependencyService.Get<IKeyboard>().HideKeyboard();
}