Open2

[.NET MAUI] ダブルタップで入力値を消去

GomitaGomita

テキストボックス(Entryクラス)をダブルタップしたときに、入力値を消去させたい。

https://learn.microsoft.com/ja-jp/dotnet/maui/fundamentals/gestures/tap?view=net-maui-8.0
これそのまんまだけど、EntryTapGestureRecognizerを追加するだけ。

MainPage.xaml
    <Entry x:Name="CarTypeEntry" WidthRequest="180"
        Focused="CarType_Focused"
        Unfocused="CarType_Unfocused"
        FontSize="18" TextColor="#000" BackgroundColor="#FFF" Margin="2">
+        <Entry.GestureRecognizers>
+            <TapGestureRecognizer Tapped="TapGestureRecognizer_DoubleTapped"
+                                NumberOfTapsRequired="2" />
+        </Entry.GestureRecognizers>
    </Entry>

イベントハンドラ側でイベント発生元のEntryオブジェクトの入力値を消去する。

MainPage.xaml.cs
+    void TapGestureRecognizer_DoubleTapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e)
+    {
+        ((Entry)sender).Text = "";
+    }
GomitaGomita

一個のオブジェクトに対してシングルタップとダブルタップの両方でイベント発生させたい場合、TapGestureRecognizerをもう1個追加する。

MainPage.xaml
    <Entry x:Name="CarTypeEntry" WidthRequest="180"
        Focused="CarType_Focused"
        Unfocused="CarType_Unfocused"
        FontSize="18" TextColor="#000" BackgroundColor="#FFF" Margin="2">
        <Entry.GestureRecognizers>
+            <TapGestureRecognizer Tapped="TapGestureRecognizer_SingleTapped"
+                                  NumberOfTapsRequired="1" />
            <TapGestureRecognizer Tapped="TapGestureRecognizer_DoubleTapped"
                                  NumberOfTapsRequired="2" />
        </Entry.GestureRecognizers>
    </Entry>
MainPage.xaml.cs
+    void TapGestureRecognizer_SingleTapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e)
+    {
+        Console.WriteLine("TapGestureRecognizer_SingleTapped: " + sender.ToString());
+    }