【问题标题】:Problems on double tap in windows phonewindows phone 双击的问题
【发布时间】:2012-01-13 03:26:24
【问题描述】:

我在我的应用中发现了一个奇怪的点击问题。我有 42 个以日历形式排列的 6x7 按钮。每个按钮都调用相同的函数 OnDoubleTap,这是按钮的事件之一。

问题是,连续点击两个按钮被视为对第二个点击按钮的双击。

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

这个函数通过这样的xaml代码与所有42个按钮相关联

<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}"/>

知道为什么会这样吗?

阿尔法

【问题讨论】:

  • 我不确定它是否与您的问题直接相关,但同时处理 Click 和 DoubleTap 事件是一条很可能导致问题的路线,因为这两个事件都会在用户被解雇时被解雇双击
  • @Matt 关于如何防止这种情况的任何建议。这 42 个按钮是日期,双击会打开一个页面,我们可以在其中添加日期注释。因此,两次点击不同的按钮会打开一个页面,以在第二次点击的按钮/日期上添加注释,这根本不是所需的行为。
  • 同时处理单次和双击(就触摸屏设备的用户而言,点击与点击相同)会导致混淆并且无法被发现。用户也不希望“按钮”分别响应单击和双击。使用上下文菜单访问辅助功能。您还应该使用内置日历作为预期功能的参考,因为这是用户期望日历界面的行为。

标签: button windows-phone-7 double-click


【解决方案1】:

我已经通过捕获第一次点击和第二次点击解决了这个问题。 检查发件人的姓名,只有在两者相同的情况下才执行该功能。

在 OnClick 函数上捕获第一次点击,在 OnDoubleTap 函数上捕获第二次点击

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
    }
}

阿尔法

【讨论】:

    猜你喜欢
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2015-11-12
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多