C# Xamarin先生手势移动内容视图
我有个问题。我正在尝试使用MR.手势移动我的ContentView,因此我尝试了以下方法:C# Xamarin先生手势移动内容视图,c#,xamarin,xamarin.forms,xamarin.android,xamarin.ios,C#,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我有个问题。我正在尝试使用MR.手势移动我的ContentView,因此我尝试了以下方法: var draggableView = new MR.Gestures.ContentView { VerticalOptions = LayoutOptions.FillAndExpand }; draggableView.Panning += (dd, ee) => { if(ee.Touches != null) { if (ee.Touches.Leng
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。需要翻译的两行永远无法到达,因此ee.touchs
始终为null
我做错了什么
这是我使用它的唯一代码 也许您忘记了将
contentview
设置为Content。为了更好的表现,我设置了背景色
您还需要更改TranslationX
和TranslationY
的值。这将使内容移动顺畅
更改:
draggableView.TranslationX = ee.Touches[0].X;
draggableView.TranslationY = ee.Touches[0].Y;
draggableView.TranslationX += ee.DeltaDistance.X;
draggableView.TranslationY += ee.DeltaDistance.Y;
至:
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;
}
}
};
结果:
draggableView.TranslationX = ee.Touches[0].X;
draggableView.TranslationY = ee.Touches[0].Y;
draggableView.TranslationX += ee.DeltaDistance.X;
draggableView.TranslationY += ee.DeltaDistance.Y;
您假设e.touch不是空的是的,因为如果您正在计划,事件会被触发,这意味着必须至少有一次触摸?我不知道。但是在访问对象属性之前,您应该始终测试null。您可以共享其余代码吗?你确定你用对了吗?这是我使用它的唯一代码