Reconnaître un mouvement d’appui
Un module de reconnaissance de mouvement d’application multiplateforme .NET (.NET MAUI) est utilisé pour la détection du tap et est implémenté avec la TapGestureRecognizer classe. Cette classe définit les propriétés suivantes :
- Buttons, de type ButtonsMask, qui définit si le bouton de la souris primaire ou secondaire, ou les deux, déclenche le mouvement sur Android, Mac Catalyst et Windows. Pour plus d’informations, consultez Définir les masques de bouton.
- Command, de type ICommand, qui est exécuté lorsqu’un appui est reconnu.
- CommandParameter, de type
object
: paramètre passé à la commandeCommand
. - NumberOfTapsRequired, de type
int
, qui représente le nombre d’appuis requis pour reconnaître un mouvement d’appui. La valeur par défaut de cette propriété est 1.
Ces propriétés sont sauvegardées par BindableProperty des objets, ce qui signifie qu’elles peuvent être des cibles de liaisons de données et mises en forme.
La TapGestureRecognizer classe définit également un Tapped événement déclenché lorsqu’un appui est reconnu. L’objet TappedEventArgs qui accompagne l’événement Tapped définit une Parameter propriété de type object
qui indique la valeur passée par la CommandParameter
propriété, si elle est définie. L’objet TappedEventArgs définit également une Buttons propriété et une GetPosition
méthode. La Buttons propriété est de type ButtonsMasket peut être utilisée pour déterminer si le bouton de la souris primaire ou secondaire a déclenché le module de reconnaissance de mouvement sur Android, Mac Catalyst et Windows. La GetPosition
méthode retourne un Point?
objet qui représente la position à laquelle le mouvement d’appui a été détecté. Pour plus d’informations sur les masques de bouton, consultez Définir le masque de bouton. Pour plus d’informations sur la GetPosition
méthode, consultez Obtenir la position du mouvement.
Avertissement
Vous TapGestureRecognizer ne pouvez pas reconnaître plus d’un appui double sur Windows.
Créer un TapGestureRecognizer
Pour reconnaître un View mouvement d’appui, créez un TapGestureRecognizer objet, gérez l’événement Tapped et ajoutez le nouveau module de reconnaissance de mouvement à la GestureRecognizers
collection sur la vue. L’exemple de code suivant montre un TapGestureRecognizer élément attaché à un Image:
<Image Source="dotnet_bot.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
NumberOfTapsRequired="2" />
</Image.GestureRecognizers>
</Image>
Le code du gestionnaire d’événements OnTapGestureRecognizerTapped
doit être ajouté au fichier code-behind :
void OnTapGestureRecognizerTapped(object sender, TappedEventArgs args)
{
// Handle the tap
}
Le code C# équivalent est :
TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) =>
{
// Handle the tap
};
Image image = new Image();
image.GestureRecognizers.Add(tapGestureRecognizer);
Par défaut, la Image réponse aux appuis simples est effectuée. Lorsque la NumberOfTapsRequired propriété est définie sur une valeur supérieure à une, le gestionnaire d’événements est exécuté uniquement si les appuis se produisent pendant une période définie. Si les deuxièmes appuis (ou ultérieurs) ne se produisent pas pendant cette période, ils sont effectivement ignorés.
Définir le masque de bouton
Un TapGestureRecognizer objet a une Buttons propriété, de type ButtonsMask, qui définit si le bouton de la souris primaire ou secondaire, ou les deux, déclenche le mouvement sur Android, Mac Catalyst et Windows. L’énumération ButtonsMask définit les membres suivants :
- Primary représente le bouton principal de la souris, qui est généralement le bouton gauche de la souris.
- Secondary représente le bouton de la souris secondaire, qui est généralement le bouton droit de la souris.
L’exemple suivant montre une TapGestureRecognizer touche qui détecte les appuis avec le bouton de la souris secondaire :
<Image Source="dotnet_bot.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
Buttons="Secondary" />
</Image.GestureRecognizers>
</Image>
Le gestionnaire d’événements de l’événement Tapped peut déterminer le bouton qui a déclenché le mouvement :
void OnTapGestureRecognizerTapped(object sender, TappedEventArgs args)
{
// Handle the tap
if (args.Buttons == ButtonsMask.Secondary)
{
// Do something
}
}
Le code C# équivalent est :
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);
Avertissement
Sur Windows, une TapGestureRecognizer propriété qui définit la Buttons
propriété Secondary
sur laquelle elle ne respecte pas la NumberOfTapsRequired propriété lorsqu’elle est supérieure à une.
En outre, un TapGestureRecognizer peut être défini afin que le bouton de la souris primaire ou secondaire déclenche le mouvement :
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
Buttons="Primary,Secondary" />
Le code C# équivalent est :
TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer
{
Buttons = ButtonsMask.Primary | ButtonsMask.Secondary
};
Obtenir la position du mouvement
La position à laquelle un mouvement d’appui s’est produit peut être obtenue en appelant la GetPosition
méthode sur un TappedEventArgs objet. La GetPosition
méthode accepte un Element?
argument et retourne une position en tant qu’objet Point?
:
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);
}
L’argument Element?
définit l’élément auquel la position doit être obtenue par rapport. Fournir une null
valeur comme cet argument signifie que la GetPosition
méthode retourne un Point?
objet qui définit la position du mouvement d’appui à l’intérieur de la fenêtre.