Auf Windows Touch B wird ignoriert. ✓ ✖
Android -Emulator -Demo
using Microsoft.Maui.Controls.Shapes;
namespace PanGestureIssueDemo;
public class MainPage : ContentPage
{
readonly AbsoluteLayout display;
Rectangle a, b;
Dictionary rectangleStartPointPair = [];
public MainPage()
{
display = [];
Content = display;
a = new()
{
StrokeThickness = 10,
Fill = Colors.Red,
WidthRequest = 50,
HeightRequest = 50,
TranslationX = 50,
TranslationY = 50
};
PanGestureRecognizer panA = new();
panA.PanUpdated += OnPanUpdated;
a.GestureRecognizers.Add(panA);
rectangleStartPointPair[a] = new(0, 0);
display.Add(a);
b = new()
{
StrokeThickness = 10,
Fill = Colors.Green,
WidthRequest = 50,
HeightRequest = 50,
TranslationX = 150,
TranslationY = 50
};
PanGestureRecognizer panB = new();
panB.PanUpdated += OnPanUpdated;
b.GestureRecognizers.Add(panB);
rectangleStartPointPair = new(0, 0);
display.Add(b);
}
private void OnPanUpdated(object? sender, PanUpdatedEventArgs e)
{
if (!a.Equals(sender) && !b.Equals(sender))
{
return;
}
Rectangle rectangle = (Rectangle)sender;
Point startPoint = rectangleStartPointPair[rectangle];
switch (e.StatusType)
{
case GestureStatus.Completed:
break;
case GestureStatus.Canceled:
break;
case GestureStatus.Started:
startPoint.X = rectangle.TranslationX;
startPoint.Y = rectangle.TranslationY;
rectangleStartPointPair[rectangle] = startPoint;
break;
case GestureStatus.Running:
if (DeviceInfo.Platform == DevicePlatform.Android)
{
startPoint.X = rectangle.TranslationX;
startPoint.Y = rectangle.TranslationY;
rectangleStartPointPair[rectangle] = startPoint;
}
double xPosition = startPoint.X + e.TotalX;
double yPosition = startPoint.Y + e.TotalY;
rectangle.TranslationX = xPosition;
rectangle.TranslationY = yPosition;
break;
}
}
}
< /code>
Erstellen Sie ein leeres Maui -Projekt mit .NET 8 und ersetzen Sie die MainPage -Datei durch diese < /p>
< /blockquote>
Ich habe 2 Elemente mit Pan -Geress hinzugefügt, aber das zweite Element muss das Problem nicht replizieren. Ich bin mir nicht sicher, was dies verursacht, der Code passt bereits die Gestenpositionslogik für jede Plattform an, aber ich bin nicht sicher, warum er sich auf Android verhält. Geste, als eine andere Geste abgeschlossen war, habe ich dies nicht auf dem angegebenen Beispielcode getestet.