首页 > 解决方案 > Xamarin MR.Gestures 移动 ContentView

问题描述

我有个问题。我正在尝试使用 MR.Gestures 来移动我的 ContentView,所以我尝试了这个:

var draggableView = new MR.Gestures.ContentView { VerticalOptions = 

LayoutOptions.FillAndExpand };
draggableView.Panning += (dd, ee) => 
{
    if(ee.Touches != null)
    {
        if (ee.Touches.Length == 1)
        {
            draggableView.TranslationX = ee.Touches[0].X;
            draggableView.TranslationY = ee.Touches[0].Y;
        }
    }
};

但这根本不会移动 ContentView。永远不会到达需要翻译的 2 行,所以ee.Touches总是null...

我究竟做错了什么?

标签: c#xamarinxamarin.formsxamarin.androidxamarin.ios

解决方案


这是我使用它的唯一代码

也许您忘记将 设置contentview为 Content。为了更好的表现,我设置了背景颜色。

您还需要更改 和 的TranslationXTranslationY。它将使 contentvew 顺利移动。

改变:

                    draggableView.TranslationX = ee.Touches[0].X;
                    draggableView.TranslationY = ee.Touches[0].Y;

至:

                    draggableView.TranslationX += ee.DeltaDistance.X;
                    draggableView.TranslationY += ee.DeltaDistance.Y;

你可以试试下面的代码。

var draggableView = new MR.Gestures.ContentView
        {
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Accent
        };

       Content = draggableView;

        draggableView.Panning += (dd, ee) =>
        {
            if (ee.Touches != null)
            {
                if (ee.Touches.Length == 1)
                {
                    //draggableView.TranslationX = ee.Touches[0].X;
                    //draggableView.TranslationY = ee.Touches[0].Y;
                    draggableView.TranslationX += ee.DeltaDistance.X;
                    draggableView.TranslationY += ee.DeltaDistance.Y;
                }
            }
        };

结果:

在此处输入图像描述


推荐阅读