Почему в поле ввода XAML WebView нет курсора, пока я не открою/закрою руководство на XBox One?

Хорошо, у меня есть игра C++/CX/XAML UWP, работающая на Xbox One.

У него есть SwapChainPanel, содержащий оверлей WebView для пользовательского интерфейса и Canvas, на котором запускается игра.

Когда я запускаю Webview, он становится полноэкранным, а холст ничего не делает. Контроллер перемещается по веб-интерфейсу без проблем: вверх/вниз/влево/вправо, «a» для выбора и «b» для возврата/приостановки. Эта навигация выполняется с использованием API JS Gamepad, а не в режиме мыши.

Проблема возникает, когда я выбираю поле ввода в веб-просмотре. Я могу выделить поле, я могу нажать A, я могу уйти, но я не помещаю курсор в поле, и экранная клавиатура не появляется. Это проблема; Я не могу ничего ввести в поле ввода.

Однако, если я нажму кнопку «Xbox» на контроллере, чтобы открыть боковую панель «Руководство», а затем снова нажму кнопку «Xbox», чтобы закрыть ее, внезапно в выбранном поле ввода появится курсор, а нажатие «a» вызовет мягкая клавиатура и все в порядке. С этого момента любое текстовое поле, которое я выбираю, работает абсолютно нормально.

Итак, почему это не работает, когда я впервые загружаю приложение? Что я не делаю из того, что мне нужно сделать?

Я подозревал какую-то проблему с фокусом, но использование GotFocusEventHandler() для сообщения о событиях фокуса только что показало, что веб-просмотр получает фокус при запуске приложения, и то же самое при возврате из боковой панели руководства. Принудительный вызов webView->Focus(FocusState::Programmatic); когда поле ввода было выделено, не сообщалось о событии фокуса, предположительно потому, что веб-просмотр уже был в фокусе.

При дальнейшем изучении страница работает нормально, если я обращаюсь к ней через URL-адрес HTTP, но не работает, если я использую HTTPS. Я не вижу явных сообщений об ошибках, и обе версии URL-адреса присутствуют в разделе Content URI манифеста.

Чтобы помочь вам диагностировать эту проблему, не могли бы вы предоставить минимальный воспроизводимый пример?

Xie Steven 22.02.2019 03:16

Я упростил приложение до небольшой модификации базового приложения-шаблона, и проблема все еще существует, поэтому я подозреваю, что это что-то в обработке Edge WebView на Xbox One. Я посмотрю, смогу ли я упростить веб-страницы.

Andy Krouwel 23.02.2019 19:52

Еще не получил более простую страницу, но отметил, что она отлично работает, если я обращаюсь к странице через Http, но не работает, если я использую Https

Andy Krouwel 26.02.2019 16:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ОК, после долгих исследований и многих тупиков следующий код устранил эту проблему, которая, как я должен предположить, является ошибкой в ​​​​Edge WebView.

webView->Visibility = Visibility::Collapsed;  
webView->Visibility = Visibility::Visible;    // Yes, I know I just changed this but it needs changing twice.
webView->Focus(FocusState::Programmatic);

Если вы пропустите любую из этих строк, все это не сработает.

Другие вопросы по теме