Erkennen einer Tippgeste
Eine .NET Multi-Platform App UI (.NET MAUI) Tippgesten-Erkennung wird zur Tipp-Erkennung verwendet und mit der TapGestureRecognizer Klasse implementiert. Diese Klasse definiert die folgenden Eigenschaften:
- Buttons, vom Typ ButtonsMask, der definiert, ob die primäre oder sekundäre Maustaste oder beides die Geste unter Android, Mac Catalyst und Windows auslöst. Weitere Informationen finden Sie unter Definieren der Schaltflächenformate.
- Command vom Typ ICommand, der ausgeführt wird, sobald eine Ziehgeste erkannt wird.
- CommandParameter, vom Typ
object
: Parameter, der an denCommand
übergeben wird. - NumberOfTapsRequired, vom Typ
int
, der die Anzahl der Tippeingaben darstellt, die zum Erkennen einer Tippbewegung erforderlich sind. Der Standardwert dieser Eigenschaft ist 1.
Diese Eigenschaften werden durch BindableProperty-Objekte gestützt, was bedeutet, dass sie Ziele von Datenbindungen sein können, und geformt.
Die TapGestureRecognizer Klasse definiert auch ein Tapped Ereignis, das ausgelöst wird, wenn ein Tippen erkannt wird. Das TappedEventArgs Objekt, das das Tapped Ereignis begleitet, definiert eine Parameter Eigenschaft vom Typ object
, die den von der CommandParameter
Eigenschaft übergebenen Wert angibt, falls definiert. Das TappedEventArgs Objekt definiert auch eine Buttons Eigenschaft und eine GetPosition
Methode. Die Buttons Eigenschaft ist vom Typ ButtonsMaskund kann verwendet werden, um zu bestimmen, ob die primäre oder sekundäre Maustaste die Gestikerkennung unter Android, Mac Catalyst und Windows ausgelöst hat. Die GetPosition
Methode gibt ein Point?
Objekt zurück, das die Position darstellt, an der die Tippbewegung erkannt wurde. Weitere Informationen zu Schaltflächenformaten finden Sie unter Definieren des Schaltflächenformats. Weitere Informationen zur GetPosition
Methode finden Sie unter "Abrufen der Gestenposition.
Warnung
Die TapGestureRecognizer kann nicht mehr erkennen, als ein Doppeltippen unter Windows.
Erstellen eines TapGestureRecognizers
Um eine View Tippbewegung zu erkennen, erstellen Sie ein TapGestureRecognizer Objekt, behandeln das Tapped Ereignis, und fügen Sie die neue Gestikerkennung der Auflistung in der GestureRecognizers
Ansicht hinzu. Das folgende Codebeispiel zeigt eine TapGestureRecognizer Klasse, die an eine Image Klasse angefügt ist:
<Image Source="dotnet_bot.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
NumberOfTapsRequired="2" />
</Image.GestureRecognizers>
</Image>
Der Code für den Ereignishandler OnTapGestureRecognizerTapped
wird dann zur CodeBehind-Datei hinzugefügt:
void OnTapGestureRecognizerTapped(object sender, TappedEventArgs args)
{
// Handle the tap
}
Der entsprechende C#-Code lautet:
TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) =>
{
// Handle the tap
};
Image image = new Image();
image.GestureRecognizers.Add(tapGestureRecognizer);
Standardmäßig reagiert Image auf einzelne Tippbewegungen. Wenn NumberOfTapsRequired auf größer als 1 festgelegt ist, wird der Ereignishandler nur ausgeführt, wenn innerhalb eines festgelegten Zeitraums Tippbewegungen vorgenommen werden. Dieser Zeitraum ist nicht konfigurierbar. Sollte die zweite Tippbewegung (oder weitere) nicht in diesem Zeitraum erfolgen, werden sie effektiv ignoriert.
Definieren des Schaltflächenformats
Ein TapGestureRecognizer Objekt verfügt über eine Buttons Eigenschaft vom Typ ButtonsMask, die definiert, ob die primäre oder sekundäre Maustaste oder beides die Geste unter Android, Mac Catalyst und Windows auslöst. Die ButtonsMask-Enumeration definiert die folgenden Member:
- Primary stellt die primäre Maustaste dar, bei der es sich in der Regel um die linke Maustaste handelt.
- Secondary stellt die sekundäre Maustaste dar, bei der es sich in der Regel um die rechte Maustaste handelt.
Im folgenden Beispiel wird ein TapGestureRecognizer Tippfehler mit der sekundären Maustaste erkannt:
<Image Source="dotnet_bot.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
Buttons="Secondary" />
</Image.GestureRecognizers>
</Image>
Der Ereignishandler für das Tapped Ereignis kann bestimmen, welche Schaltfläche die Geste ausgelöst hat:
void OnTapGestureRecognizerTapped(object sender, TappedEventArgs args)
{
// Handle the tap
if (args.Buttons == ButtonsMask.Secondary)
{
// Do something
}
}
Der entsprechende C#-Code lautet:
TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer
{
Buttons = ButtonsMask.Secondary
};
tapGestureRecognizer.Tapped += (s, e) =>
{
// Handle the tap
if (args.Buttons == ButtonsMask.Secondary)
{
// Do something
}
};
Image image = new Image();
image.GestureRecognizers.Add(tapGestureRecognizer);
Warnung
Unter Windows respektiert eine TapGestureRecognizer, welche die Buttons
Eigenschaft auf Secondary
setzt, nicht die NumberOfTapsRequired Eigenschaft, wenn diese größer als eins ist.
Darüber hinaus kann eine TapGestureRecognizer definiert werden, sodass entweder die primäre oder sekundäre Maustaste die Geste auslöst:
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
Buttons="Primary,Secondary" />
Der entsprechende C#-Code lautet:
TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer
{
Buttons = ButtonsMask.Primary | ButtonsMask.Secondary
};
Abrufen der Gestikposition
Die Position, an der eine Tippbewegung aufgetreten ist, kann durch Aufrufen der GetPosition
Methode für ein TappedEventArgs Objekt abgerufen werden. Die GetPosition
Methode akzeptiert ein Element?
Argument und gibt eine Position als Point?
Objekt zurück:
void OnTapGestureRecognizerTapped(object sender, TappedEventArgs e)
{
// Position inside window
Point? windowPosition = e.GetPosition(null);
// Position relative to an Image
Point? relativeToImagePosition = e.GetPosition(image);
// Position relative to the container view
Point? relativeToContainerPosition = e.GetPosition((View)sender);
}
Das Element?
Argument definiert das Element, zu dem die Position relativ abgerufen werden soll. Die Angabe eines null
Wertes als Argument bedeutet, dass die GetPosition
Methode ein Point?
Objekt zurückgibt, das die Position der Tap-Geste innerhalb des Fensters definiert.