【问题标题】:Holding event is not fired on touch screen device在触摸屏设备上不会触发保持事件
【发布时间】:2017-06-05 02:05:09
【问题描述】:

我正在尝试创建一个简单的 uwp 应用程序,如果用户右键单击非触摸设备并且用户按住触摸屏设备,我需要在其中显示上下文菜单。 我正在使用在我的桌面上完美运行的右击事件。另一方面,我使用了长按屏幕时应该触发的按住事件,但它不起作用(在触摸屏手机上)。

private void Webview_Holding(object sender, HoldingRoutedEventArgs e)
    {
        Webview.ContextFlyout.ShowAt(sender as FrameworkElement);
    }

我是否需要使用其他事件来显示上下文菜单,如果是,那么是哪一个?

【问题讨论】:

    标签: c# uwp touch


    【解决方案1】:

    正如我回答 here 时,您应该对触摸和非触摸设备使用 RightTapped 事件。但是,WebView 并不支持所有的触摸或键盘事件。

    WebView控件的MSDN备注部分:

    如事件表中所示,WebView 不支持大多数 继承自 UIElement 的用户输入事件,如 KeyDown、KeyUp、 和 PointerPressed。一个常见的解决方法是使用 InvokeScriptAsync 使用 JavaScript eval 函数来使用 HTML 事件处理程序,以及 使用来自 HTML 事件处理程序的 window.external.notify 来通知 使用 WebView.ScriptNotify 的应用程序。

    【讨论】:

    • 我非常了解RightTapped的用法,我也用过。但正如我在问题中提到的,我的问题是在触摸屏设备的情况下触发的 Holding_event。
    • @VivekVaishya 对于触摸屏设备,您不需要Holding 事件。 RightTapped 事件在基于触摸和鼠标的设备上都可以正常工作。您的问题是 WebView 根本没有引发鼠标/触摸事件。
    • 我尝试了右击事件,即使使用 webview,它也可以在桌面(即非触摸)上工作。但其他事件(如持有、点击、操作(所有这些))都没有工作移动的。可能是手机无法识别举行事件的问题,有可能吗?
    • 我明白你的意思。您是否有 javascript 中的示例来识别举行事件?如果可能的话,请详细说明(因为我是 js 的新手)。
    • @VivekVaishya Here 你可以找到在 javascript 中显示上下文菜单的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多