在WinRT应用程序中处理2、3、4、5个手指的轻敲、双击和长按手势

9

我可以轻松处理这样的手势:Tapped(单击)、DoubleTap(双击)和Holding(长按)。

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
}

但是事件没有获取手指数量的属性,当屏幕上存在多个触摸点时,它们甚至不会被触发。我还想处理2、3、4、5个手指的TappedDoubleTapHolding手势。有人能告诉我如何做吗?

1个回答

4
你需要使用传递给指针事件的PointerRoutedEventArgs,并且采用较困难的方式进行操作。
每次指针进入控件时,都会分配一个唯一的指针ID。我会创建一个字典,并在控件上按下时将每个指针添加到该字典中(当它们退出时显然要删除)。然后在现有的"tapped"、"double tapped"等处理程序中,只需检查您的字典中有多少指针,并调用相应的处理程序。

你需要编写代码来解决这个问题。你可以扩展字典,以存储指针是否触发了持续事件,然后你可以检查该变量以查看有多少指针正在持续。 - sLedgem
编写自己的“tapped”程序?记录指针释放的时间,然后使用该时间来确定发生了什么?这可能有些不正规,但我认为这是最好的选择。另一个问题显然是,为什么要使用非标准交互? - sLedgem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接