为Xamarin / Monogame打开屏幕键盘

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

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

显示软输入(屏幕键盘)

 var pView = game.Services.GetService(); 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
  • game是你的游戏类(在Mono中),类型为Microsoft.Xna.Framework.Game

隐藏软输入(屏幕键盘)

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

在我解决了这个之后,我捕获输入的方式(XNA / Mono方式)没有捕获此输入。 所以我不得不继续挖掘。 虽然它不一定与这个问题有关,但我想在这里发布,所以它存在于某个地方。 Android开发者网站上的这篇文档对我有所帮助。

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

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

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