私はアプリ内にボタンを持っています。Windows 8/XAMLダブルタップイベントは常にタップで始まる
ただし、ダブルタップすると、最初にタップイベントが発生したように見えますが、タップするとアニメーションが再開されます。すばやく連続してダブルタップします。これを回避する方法はありますか?これは既知の問題ですか、私は新人ミスですか?
編集:質問すると、私はTapped
とDoubleTapped
イベントを使用しています。
私はアプリ内にボタンを持っています。Windows 8/XAMLダブルタップイベントは常にタップで始まる
ただし、ダブルタップすると、最初にタップイベントが発生したように見えますが、タップするとアニメーションが再開されます。すばやく連続してダブルタップします。これを回避する方法はありますか?これは既知の問題ですか、私は新人ミスですか?
編集:質問すると、私はTapped
とDoubleTapped
イベントを使用しています。
あなたはそれを両方にすることを検討したいかもしれません。ウィンドウ内のフォルダをダブルクリックするように考えてみてください。ユーザーは、最初のクリック(フォルダの強調表示)で何か起こっていることに慣れ、ダブルクリックが強調表示され、次にナビゲートすることを期待しています。
まったく問題は技術的なものではなく、設計上の問題のようです。
単一のタブにいくつかの一時停止を与えます。二重のタブがある場合は、1つのタブのイベントが
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
}
私は個人的にはこれが最良の方法だと感じています!! –
[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
}
を排除して発生いくつかのコードが良い例だろうDoubleTapped()またはMouseDoubleClicked()を使用していますか?第2の考えでは、アニメーションを切り替えるタップを1つだけ持たないのはなぜですか? –
これはタイマーで、シングルタップはタイマーを一時停止し、ダブルタップは完全にリセットします。 – roryok
だから、一度タップしてもタイマーを一時停止させないでください。ユーザーが再びタップしてタイマーを一時停止すると、タイマーは続行されますか?ワンクリックでタイマーをオフに切り替える。 –