使用 MR.Gestures 在用户触摸屏幕的位置放置一个引脚

内置手势识别器的 Xamarins 仅提供非常基本的触摸处理。例如,无法获得触摸手指的位置。MR.Gestures 是一个增加 14 个不同触摸处理事件的组件。触摸手指的位置是传递给所有 MR.Gestures 事件的 EventArgs 的一部分。

如果你想在屏幕上的任何地方放置一个引脚,最简单的方法是使用一个处理 Tapping 事件的 MR.Gestures.AbsoluteLayout

<mr:AbsoluteLayout x:Name="MainLayout" Tapping="OnTapping">
    ...
</mr:AbsoluteLayout>

正如你所看到的,Tapping="OnTapping" 与嵌套的 GestureRecognizers 相比,感觉更像 .NET 而不是 Xamarins 语法。该语法是从 iOS 复制的,它对 .NET 开发人员来说有点像。

在你的代码后面,你可以像这样添加 OnTapping 处理程序:

private void OnTapping(object sender, MR.Gestures.TapEventArgs e)
{
    if (e.Touches?.Length > 0)
    {
        Point touch = e.Touches[0];
        var image = new Image() { Source = "pin" };
        MainLayout.Children.Add(image, touch);
    }
}

你也可以使用 TappingCommand 而不是 Tapping 事件绑定到 ViewModel,但这会使这个简单示例中的内容复杂化。

有关 MR.Gestures 的更多样本可以在 GitHub 上的 GestureSample 应用程序MR.Gestures 网站 上找到 。这些还展示了如何使用事件处理程序,命令,MVVM 等所有其他触摸事件…