アプリにボタンがあります。タップする(アニメーションを一時停止する)か、ダブルタップする(アニメーションを再開する)かによって、異なる処理を実行したい
ただし、ダブルタップすると、最初にタップイベントが発生し、次にダブルタップがすばやく連続して発生するようです。これを回避する方法はありますか?これは既知の問題ですか、それとも新人のミスを犯していますか?
編集:質問する人のために、私はTapped
とDoubleTapped
イベントを使用しています。
アプリにボタンがあります。タップする(アニメーションを一時停止する)か、ダブルタップする(アニメーションを再開する)かによって、異なる処理を実行したい
ただし、ダブルタップすると、最初にタップイベントが発生し、次にダブルタップがすばやく連続して発生するようです。これを回避する方法はありますか?これは既知の問題ですか、それとも新人のミスを犯していますか?
編集:質問する人のために、私はTapped
とDoubleTapped
イベントを使用しています。
単一のタブに少し休止します。ダブルタブが発生した場合、シングルタブイベントは排除されます
bool singleTap;
private async void control_Tapped_1(object sender, TappedRoutedEventArgs e)
{
this.singleTap = true;
await Task.Delay(200);
if (this.singleTap)
{
// Single tab Method .
}
}
private void control_DoubleTapped_1(object sender, DoubleTappedRoutedEventArgs e)
{
this.singleTap = false;
// Double tab Method
}
両方を実行させることを検討することをお勧めします。Windowsでフォルダをダブルクリックするようなものだと考えてください。ユーザーは、最初のクリック(フォルダーの強調表示)で何かが発生することに慣れており、ダブルクリックして両方の強調表示を行ってからナビゲートすることを期待しています。
全体として、それは技術的な問題ではなく、設計上の問題のように思われます。
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern uint GetDoubleClickTime();
bool _singleTapped = false;
//Tapped event handler
private async void control_Tapped(object sender, TappedRoutedEventArgs e)
{
_singleTapped = true;
//var x = GetDoubleClickTime();
//GetDoubleClickTime() gets the maximum number of milliseconds that can elapse between a first click and a second click
await Task.Delay(TimeSpan.FromMilliseconds(GetDoubleClickTime()));
if (!_singleTapped)
{ return; }
//SingleTapped code
}
//DoubleTapped event handler
private async void control_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
_singleTapped = false;
//DoubleTapped code
}