2011-12-05 19 views
0

私のアプリで奇妙なタップの問題を発見しました。私は6x7の42のボタンをカレンダーの形で並べました。すべてのボタンには、ボタンのイベントの1つであるOnDoubleTapと同じ機能が呼び出されています。Windowsのダブルタップの問題電話

問題は、2つのボタンの連続するタップが、2番目のタップされたボタンのダブルタップとして扱われることです。

public void OnButtonDoubleTap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
     // function 
} 

この関数は、この

<Button x:Name="b00" Content="" Height="60" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Foreground="#FF171717" BorderThickness="0" Hold="OnButtonLongPress" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}" /> 
<Button x:Name="b01" Content="" Height="60" Canvas.Left="68" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b02" Content="" Height="60" Canvas.Left="136" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b03" Content="" Height="60" Canvas.Left="204" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 
<Button x:Name="b04" Content="" Height="60" Canvas.Left="272" Width="68" MinWidth="68" MinHeight="60" Click="OnClick" DoubleTap="OnButtonDoubleTap" Hold="OnButtonLongPress" Foreground="#FF171717" BorderThickness="0" Style="{StaticResource DateButtonTemplate}" FontFamily="{StaticResource CicleFina}"/> 

なぜこれが起こっているすべてのアイデアのようなXAMLコードを介してすべての42個のボタンに関連付けられていますか?

Alfah

+0

私はそれが直接あなたの問題に関連していますかはわからないが、両方 'Click'を扱います'DoubleTap'イベントは、ユーザがダブルタップすると両方が起動されるため、likleyが問題につながる経路です。 –

+0

@Mattこれをどう回避できるかについての提案です。これらの42個のボタンは日付であり、ダブルタップは日付のノートを追加できるページを開きます。従って、異なるボタン上の2つのタップは、第2のタップされたボタン/日付上のノートを追加するためのページを開き、所望の動作ではない。 – alfah

+1

は、シングルタップとダブルタップの両方を処理する(クリックは、タッチスクリーンデバイスのユーザに関する限り、タップと同じです)、混乱を招き、発見できません。ユーザーは、「ボタン」がシングルタップとダブルタップに別々に反応することも期待していません。コンテキストメニューを使用して、セカンダリ機能にアクセスします。また、予定されている機能のリファレンスとして、組み込みのカレンダーを使用します。これは、ユーザーがカレンダーインターフェイスに期待する動作です。 –

答えて

1

私が最初にクリックし、2番目のクリックをキャプチャすることにより、問題を解決しました。 送信者の名前を確認し、両方が同じ場合にのみ機能を実行します。

最初のクリックがOnDoubleTap機能でのOnClick機能と第二の上に捕獲され

public void OnClick(object sender, RoutedEventArgs e) 
{ 
    Button nbut = sender as Button; 
    m_captureFirstClick = nbut.Name; 
} 

public void OnButtonDoubleTap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    Button temp = sender as Button; 
    if (temp.Name == m_captureFirstClick) 
    { 
     // do what you want to do 
    } 
} 

Alfah

関連する問題