1

シングルクリックとダブルクリックのジレンマ

シングルクリックでイベントが発生し、ダブルクリックで別のイベントが発生しています。

シングルクリック: メール メッセージのプレビューを読み込む

ダブルクリック: 別のウィンドウにメッセージ ビューをロード

問題は、ダブルクリックが発生するために、シングルクリックが... 2 回発生することです。現在の解決策は、シングルクリックにタイムアウトを設定し、ダブルクリックが検出された場合にキャンセルすることです。

質問 1: ダブルクリック イベントが発生するまでのタイムアウト時間は? たとえば、非常にゆっくりとシングルクリックすると、それは起こりません。

質問 2: タイムアウトを使用するよりも、これを解決するためのより良い方法はありますか?

4

4 に答える 4

3

あなたは間違いなくあなたのUIを再考する必要があります。特にWindowsで、周囲のアプリを見てください。ダブルクリックがサポートされている場合、シングルクリックアクションは常にトリガーされ、邪魔になりません。たとえば、アイコンをダブルクリックすると、最初のクリックでアイコンが選択され、2回目のクリックでアクションがトリガーされます。それには少なくとも2つの理由があります。

  1. ダブルクリックは複雑な操作です。ユーザーが失敗し、代わりにシングルクリックアクションがトリガーされることがあります。したがって、あなたは彼を困らせるようなことは何もしたくありません。

  2. ユーザーがダブルクリックするたびにシングルクリックアクションがトリガーされないようにする場合は、タイムアウトを設定する以外に方法はありません。これは、シングルクリックを使用しようとするすべてのユーザーがそのタイムアウトに耐えなければならず、アプリケーションの応答性が低下し、ユーザーエクスペリエンスが妨げられることを意味します。

WP7開発に固有の理由をもう1つ追加できます。他のほとんどのモバイルアプリではダブルクリックが使用されていないため、ジェスチャーを検出できず、ほとんどのユーザーはそれを使用できることに気づきません。

結論:別のジェスチャ(スイープやタップアンドホールドなど)の使用を検討するか、UIを変更して不要にします。

于 2012-05-18T09:24:43.650 に答える
1

私は友人の助けを借りて答えを見つけました。

private void Button_Tap(object sender, GestureEventArgs e)
    {
        //add the event handler for single tap event
        dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
        //start timer. If the tick happends a single tap happend. If it is a double tap the tick event will be removed.
        dispatcherTimer.Start();
    }

    //No double tap happend. So execute the tap function.
    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        //Stop timer
        dispatcherTimer.Tick -= new EventHandler(dispatcherTimer_Tick);
        dispatcherTimer.Stop();

        //Rest of the tap function
        Taps.Add("Tap");
    }

    private void Button_DoubleTap(object sender, GestureEventArgs e)
    {
        //Stop timer
        dispatcherTimer.Tick -= new EventHandler(dispatcherTimer_Tick);
        dispatcherTimer.Stop();

        //Rest of the double tap function
        Taps.Add("Double tap");
    }
于 2012-05-18T17:20:58.600 に答える
0

なぜあなたは何か他のものを使わないのですか。タップして新しいウィンドウで開き、押し続けてプレビューしますか?

于 2012-05-18T09:22:53.010 に答える
0

wp7 では、doubleTap はおそらく使用されません。保留が正しい方法です

于 2012-05-18T19:00:23.897 に答える