XAML 我如何才能实现返回导航时,点击游戏手柄上的按钮

bt1cpqcv  于 2023-06-03  发布在  其他
关注(0)|答案(1)|浏览(155)

游戏手柄B按钮正在暂停应用程序,而不是返回导航。
我试图使用WebView开发一个UWP应用程序,但当我试图通过单击游戏手柄上的“B”按钮在应用程序中进行返回导航时,它会暂停整个应用程序并返回主页,无论如何,我如何可以实现XBOX控制器的返回键功能。
例如,如果我在Netflix主页上,如果我点击任何节目,它会将我导航到该内容的详细信息页面。从那里,如果我点击返回,它应该导航回主页,而不是暂停整个应用程序。
主页

<WebView Source="https://luser.github.io/gamepadtest/">
</WebView>

这是我到目前为止一直使用的webview部分,并通过使用文档中提供的GoBack()功能进行了一些更改,但仍然面临同样的问题,例如返回导航根本不起作用。
'MainPage.xaml.cs'

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
}

private void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{
    if(args.VirtualKey == Windows.System.VirtualKey.GamepadB)
    {
        if(source.CanGoBack)
        {
            source.GoBack();
        }
    }
}

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    Window.Current.CoreWindow.KeyDown -= CoreWindow_KeyDown;
}

我是否遗漏了导致此问题的任何内容,或者是否有任何其他方法可以用来获得所需的功能。
我在设置**navigation.gamepadInputEmulation = 'keyboard':**
提前感谢您花时间看问题并帮助我。

vlurs2pr

vlurs2pr1#

我已经尝试了一些其他的方法,已在文档和论坛中提供,但他们都没有为我工作。所以,这是对我很有效的解决方案。
我添加了一个事件监听器来捕获XBOX控制器中的按钮单击事件,而不是使用循环来检查哪个按钮被按下,我将其替换为“document.addEventListener”,它在浏览器上尝试时不会给予任何事件,但在XBOX控制台中运行时能够捕获keyCodes。
在这里,当我们使用addEventListener时,keyCodes将与文档中提供的实际keycodes不同。在这里,我们将获得GamepadB按钮的键码为“196”。添加这一行后,能够禁用默认功能.

if (ev.keyCode === 196) {
    ev.preventDefault();
  }

希望这对将来的人有所帮助。快乐编码!!!

相关问题