8

アプリにボタンがあります。タップする(アニメーションを一時停止する)か、ダブルタップする(アニメーションを再開する)かによって、異なる処理を実行したい

ただし、ダブルタップすると、最初にタップイベントが発生し、次にダブルタップがすばやく連続して発生するようです。これを回避する方法はありますか?これは既知の問題ですか、それとも新人のミスを犯していますか?

編集:質問する人のために、私はTappedDoubleTappedイベントを使用しています。

4

3 に答える 3

17

単一のタブに少し休止します。ダブルタブが発生した場合、シングルタブイベントは排除されます

  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  
  }
于 2013-07-02T14:44:29.847 に答える
4

両方を実行させることを検討することをお勧めします。Windowsでフォルダをダブルクリックするようなものだと考えてください。ユーザーは、最初のクリック(フォルダーの強調表示)で何かが発生することに慣れており、ダブルクリックして両方の強調表示を行ってからナビゲートすることを期待しています。

全体として、それは技術的な問題ではなく、設計上の問題のように思われます。

于 2012-11-14T04:07:56.080 に答える
0
[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
        }
于 2017-02-22T23:43:04.983 に答える