Я разрабатываю игру с использованием Xamarin/Monogame, и мне нужно открыть клавиатуру на мобильном устройстве, когда они нажмут на мой входной контроль. Я понимаю, что я могу записывать ввод с использованием Keyboard.GetState()
, когда я использую эмулятор и клавиатуру, но у реальных пользователей будут физические устройства, и мне нужно открыть экранную клавиатуру, чтобы они могли вводить информацию. Я ничего не вижу в любой документации, описывающей это, но мне трудно поверить, что я первый человек столкнулся с этим. Я просмотрел Xamarin/Monogame's docs on input, и я прочитал this StackOverflow article. Дайте мне знать, если вам нужна дополнительная информация, чтобы помочь решить эту проблему. Заранее благодарю за любую помощь.Открытая экранная клавиатура для Xamarin/Monogame
ответ
После долгих поисков я смог найти решение. Сначала я объясню, как я туда попал: Я перестал думать: «Как отобразить экранную клавиатуру в 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
- Этот c ода называется изнутри
Activity
класса, такApplication
относится к свойству по этому классу (this.Application
) game
Ваш игровой класс (в моно), который имеет типMicrosoft.Xna.Framework.Game
Скрытие мягкий вход (экранной клавиатура)
InputMethodManager inputMethodManager = Application.GetSystemService(Context.InputMethodService) as InputMethodManager;
inputMethodManager.HideSoftInputFromWindow(pView.WindowToken, HideSoftInputFlags.None);
После того как я решил это, как я был захват входного потока (XNA/моно путь) был не захватывая этот вход. Поэтому мне пришлось продолжать рыть. Хотя это не обязательно относится к этому вопросу, я бы хотел опубликовать его здесь, чтобы он где-то существовал. Эта документация на Android Developers site помогла мне.
Чтобы захватить ввод непосредственно (который является то, что нам нужно сделать, чтобы захватить для ввода OSK), вам необходимо переопределить OnKeyPress
метод на активности ваша игра работает в Для меня, это выглядит следующим образом:.
public class AndroidActivity : AndroidGameActivity
{
private void OnKeyPress(object sender, View.KeyEventArgs e)
{
// do stuff with the input
}
}
Надеюсь, это поможет любому, кто застрял в этом; информацию было трудно найти, но теперь, когда я изменил свое настроение на «как Android/iOS справляется с этой задачей», я смог легче найти ответы. Удачи!
- 1. Веб-страница Java-апплет - открытая экранная клавиатура
- 2. Программно открытая экранная клавиатура в UWP
- 3. экранная клавиатура
- 4. Экранная клавиатура для приложения touchscreen
- 5. C# цифровая экранная клавиатура
- 6. Экранная клавиатура .NET Kiosk
- 7. Отключить экранная клавиатура
- 8. Экранная клавиатура WPF
- 9. Экранная клавиатура автоматически всплывает
- 10. Экранная клавиатура в Qt 5
- 11. Какая экранная клавиатура для сенсорного экрана?
- 12. Экранная клавиатура - Windows 8.1 Tablet
- 13. Android EditText и экранная клавиатура
- 14. Принудительная открытая алфавитная клавиатура
- 15. Принудительная открытая клавиатура
- 16. сохранить панель инструментов местоположения в макете, когда экранная клавиатура приходит и экранная клавиатура ниже редактирования текста
- 17. UIText - открытая клавиатура при запуске?
- 18. Обнаруживать, если экранная клавиатура открыта (TabTip.exe)
- 19. Мышь левой кнопкой мыши и экранная клавиатура
- 20. Ошибка Выполнение «osk» Экранная клавиатура AKA VB.Net
- 21. Экранная клавиатура Excel Interop, использующая диапазон
- 22. Как настроить макет, когда экранная клавиатура появляется
- 23. Скрыть экранная клавиатура показала другим приложением
- 24. Предотвращение сцены JavaFx от фокусировки - Экранная клавиатура
- 25. Intel XDK - Открытая персонализировать клавиатура
- 26. Телефонная клавиатура, экранная клавиатура на iOS меняет мой контент
- 27. андроида: не показывать экранная клавиатура автоматически
- 28. перекрывающихся фрагментов, когда экранная клавиатура появляется
- 29. Пользовательские экранная клавиатура для андроида время выполнения изменения
- 30. Отсутствует экранная клавиатура для веб-приложения Flash/Flex на Android?