使用 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 等所有其他触摸事件…