Dokunma hareketini tanıma
Dokunma algılama için .NET Çok platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) dokunma hareketi tanıyıcısı kullanılır ve sınıfıyla birlikte TapGestureRecognizer uygulanır. Bu sınıf aşağıdaki özellikleri tanımlar:
- ButtonsButtonsMask, birincil veya ikincil fare düğmesinin mi yoksa her ikisinin birden mi Android, Mac Catalyst ve Windows'ta hareketi tetiklediğini tanımlar. Daha fazla bilgi için bkz . Düğme maskelerini tanımlama.
- Command, türündedir ICommandve bir dokunma tanındığında yürütülür.
- CommandParameter, türündeki
object
parametresineCommand
geçirilir. - NumberOfTapsRequired, türündedir
int
. Bu, bir dokunma hareketini tanımak için gereken dokunma sayısını temsil eder. Bu özelliğin varsayılan değeri 1'dir.
Bu özellikler nesneler tarafından BindableProperty desteklenir; bu da veri bağlamalarının hedefleri olabileceği ve stillendirilebileceği anlamına gelir.
sınıfı, TapGestureRecognizer bir Tapped dokunma tanındığında tetiklenen bir olayı da tanımlar. Olaya TappedEventArgs eşlik Tapped eden nesne, tanımlıysa özelliği tarafından CommandParameter
geçirilen değeri gösteren türdeki object
bir Parameter özelliği tanımlar. TappedEventArgs Nesnesi ayrıca bir Buttons özellik ve bir GetPosition
yöntem tanımlar. Buttons özelliği türündedir ButtonsMaskve Birincil veya ikincil fare düğmesinin Android, Mac Catalyst ve Windows'ta hareket tanıyıcıyı tetikleyip tetiklemediğini belirlemek için kullanılabilir. yöntemi, GetPosition
dokunma hareketinin algılandığı konumu temsil eden bir Point?
nesne döndürür. Düğme maskeleri hakkında daha fazla bilgi için bkz . Düğme maskesini tanımlama. Yöntemi hakkında GetPosition
daha fazla bilgi için bkz . Hareket konumunu alma.
Uyarı
A TapGestureRecognizer , Windows'ta iki kez dokunmaktan fazlasını tanıyamaz.
TapGestureRecognizer oluşturma
View Dokunma hareketini tanımak için bir TapGestureRecognizer nesne oluşturun, olayı işleyin Tapped ve görünümdeki koleksiyona GestureRecognizers
yeni hareket tanıyıcısını ekleyin. Aşağıdaki kod örneğinde bir öğesine eklenmiş bir TapGestureRecognizerImagegösterilmektedir:
<Image Source="dotnet_bot.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
NumberOfTapsRequired="2" />
</Image.GestureRecognizers>
</Image>
Olay işleyicisinin OnTapGestureRecognizerTapped
kodu arka planda kod dosyasına eklenmelidir:
void OnTapGestureRecognizerTapped(object sender, TappedEventArgs args)
{
// Handle the tap
}
Eşdeğer C# kodu:
TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) =>
{
// Handle the tap
};
Image image = new Image();
image.GestureRecognizers.Add(tapGestureRecognizer);
Varsayılan olarak, Image tek dokunmalara yanıt verir. NumberOfTapsRequired Özellik birden büyük olarak ayarlandığında, olay işleyicisi yalnızca dokunmaların belirli bir süre içinde gerçekleşmesi durumunda yürütülür. İkinci (veya sonraki) dokunmalar bu süre içinde gerçekleşmezse, etkili bir şekilde yoksayılır.
Düğme maskesini tanımlama
Bir TapGestureRecognizer nesnenin, birincil veya ikincil fare düğmesinin veya her ikisinin de Android, Mac Catalyst ve Windows'ta hareketi tetikleyip tetiklemeyeceğini tanımlayan türünde ButtonsMaskbir Buttons özelliği vardır. Numaralandırma ButtonsMask aşağıdaki üyeleri tanımlar:
- Primary , genellikle sol fare düğmesi olan birincil fare düğmesini temsil eder.
- Secondary , genellikle sağ fare düğmesi olan ikincil fare düğmesini temsil eder.
Aşağıdaki örnekte, ikincil fare düğmesiyle dokunmaları algılayan bir TapGestureRecognizer gösterilir:
<Image Source="dotnet_bot.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
Buttons="Secondary" />
</Image.GestureRecognizers>
</Image>
Olayın olay işleyicisi Tapped , hareketi tetikleyen düğmeyi belirleyebilir:
void OnTapGestureRecognizerTapped(object sender, TappedEventArgs args)
{
// Handle the tap
if (args.Buttons == ButtonsMask.Secondary)
{
// Do something
}
}
Eşdeğer C# kodu:
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);
Uyarı
Windows'da, özelliğini Secondary
olarak ayarlayan Buttons
bir TapGestureRecognizer özelliği, birden büyük olduğunda özelliğine NumberOfTapsRequired saygı göstermez.
Ayrıca, birincil veya ikincil fare düğmesinin hareketi tetiklemesi için bir TapGestureRecognizer tanımlanabilir:
<TapGestureRecognizer Tapped="OnTapGestureRecognizerTapped"
Buttons="Primary,Secondary" />
Eşdeğer C# kodu:
TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer
{
Buttons = ButtonsMask.Primary | ButtonsMask.Secondary
};
Hareket konumunu alma
Bir nesnede TappedEventArgs yöntemi çağrılarak dokunma hareketinin GetPosition
gerçekleştiği konum elde edilebilir. GetPosition
yöntemi bir Element?
bağımsız değişken kabul eder ve nesne olarak bir Point?
konum döndürür:
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);
}
Element?
bağımsız değişkeni, konumun göreli olarak alınması gereken öğeyi tanımlar. Bu bağımsız değişken olarak bir null
değer sağlamak, yöntemin GetPosition
pencerenin içindeki dokunma hareketinin konumunu tanımlayan bir Point?
nesne döndürdüğü anlamına gelir.