编程语言
首页 > 编程语言> > c# – 为Xamarin / Monogame打开屏幕键盘

c# – 为Xamarin / Monogame打开屏幕键盘

作者:互联网

我正在使用Xamarin / Monogame开发游戏,我需要在他们点击我的输入控件时在移动设备上打开键盘.我认识到,当我使用模拟器和键盘时,我可以使用Keyboard.GetState()捕获输入,但真正的用户将拥有物理设备,我需要打开屏幕键盘才能输入信息.我没有在任何描述这个的文档中看到任何内容,但很难相信我是第一个碰到这个问题的人.我已经浏览了Xamarin/Monogame’s docs on input,我已经阅读了this StackOverflow article.如果您需要更多信息来帮助解决这个问题,请告诉我.在此先感谢您的帮助.

解决方法:

经过多次挖掘,我能够找到解决方案.我首先解释一下我是如何到达那里的:
我不再想“如何在Mono中显示屏幕键盘?”并开始思考“如何在Android设备上显示键盘?”这导致我this article这是完美的; Xamarin和Android.这是相关的片段:

显示软输入(屏幕键盘)

var pView = game.Services.GetService<View>();
var inputMethodManager = Application.GetSystemService(Context.InputMethodService) as InputMethodManager;
inputMethodManager.ShowSoftInput(pView, ShowFlags.Forced);
inputMethodManager.ToggleSoftInput(ShowFlags.Forced, HideSoftInputFlags.ImplicitOnly);

一些关键的注意事项:

> View类是Android.Views.View
> InputMethodManager类是Android.Views.InputMethods.InputMethodManager
>此代码在Activity类中调用,因此Application引用该类的属性(this.Application)
>游戏是你的游戏类(在Mono中),类型为Microsoft.Xna.Framework.Game

隐藏软输入(屏幕键盘)

InputMethodManager inputMethodManager = Application.GetSystemService(Context.InputMethodService) as InputMethodManager;
inputMethodManager.HideSoftInputFromWindow(pView.WindowToken, HideSoftInputFlags.None);

在我解决了这个之后,我捕获输入的方式(XNA / Mono方式)没有捕获这个输入.所以我不得不继续挖掘.虽然它不一定与这个问题有关,但我想在这里发布,所以它存在于某个地方.关于Android Developers site的这份文件帮助了我.

要直接捕获输入(这是我们需要捕获到OSK输入的操作),您需要在运行游戏的活动上覆盖OnKeyPress方法.对我来说,这看起来如下:

public class AndroidActivity : AndroidGameActivity
{
    private void OnKeyPress(object sender, View.KeyEventArgs e)
    {
        // do stuff with the input
    }
}

希望这可以帮助其他任何坚持这个的人;信息很难找到,但现在我已经改变了我的心态“Android / iOS如何处理这个东西”我已经能够更容易地找到答案.祝好运!

标签:c,android,xamarin,monogame,on-screen-keyboard
来源: https://codeday.me/bug/20190608/1199490.html