【问题标题】:Handling 2, 3, 4, 5 Fingers Tapped, DoubleTap & Holding Gestures in WinRT App在 WinRT 应用程序中处理 2、3、4、5 个手指轻敲、双击和按住手势
【发布时间】:2012-10-26 02:59:21
【问题描述】:

我可以轻松处理 1 根手指 TappedDoubleTapHolding 这样的手势:

public MainPage()
{
    this.InitializeComponent();
    this.Tapped += mc_Tapped;
    this.DoubleTapped += mc_DoubleTapped;
    this.Holding += mc_Holding;
}
public void mc_Tapped(object sender, TappedRoutedEventArgs e)
{
    //Tap
}
public void mc_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
    //DoubleTap
}
public void mc_Holding(object sender, HoldingRoutedEventArgs e)
{
    //Hold
}

但是这些事件没有获取手指数量的属性,并且当屏幕上存在超过 1 个触摸接触时,它们甚至不会被触发。我还想处理 2、3、4、5 个手指 TappedDoubleTapHolding 手势。谁能告诉我该怎么做?

【问题讨论】:

    标签: c# .net vb.net windows-runtime


    【解决方案1】:

    您必须使用在指针事件(即按下、输入、释放等)上传递的 PointerRoutedEventArgs 并努力做到这一点

    每次指针进入控件时都会分配一个唯一的指针 ID。我将创建一个字典,并在控件上按下时将每个指针添加到该字典(并且在它们退出时显然将它们删除)。然后在您现有的点击、双击和此类处理程序中,只需检查字典中有多少指针并调用适当的处理程序

    【讨论】:

    • 您必须围绕它编写代码。您也许可以扩展字典以存储指针是否触发了持有事件,然后您可以检查该 var 以查看有多少指针正在持有
    • 编程你自己的“窃听”?记录指针释放的时间,然后使用该时间确定发生了什么?它会很老套,但我认为那是最好的选择。另一个问题显然是你为什么要使用非标准交互?
    猜你喜欢
    • 2015-08-15
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多