Xamarin Forms:如何为图像添加单击和双击?

Posted

技术标签:

【中文标题】Xamarin Forms:如何为图像添加单击和双击?【英文标题】:Xamarin Forms: How to add single and double tap for an image? 【发布时间】:2021-08-16 11:21:53 【问题描述】:

我正在尝试实现一个键盘 UI。在键盘中,+(plus)0(zero) 选项放置在单个图像图标上。所以我需要在 UI 上显示 0 进行单击,而双击我需要在 UI 上显示 +

我的代码

<Image 
    Grid.Column="1"
    Source="ic_zero_xx.png"
    Style="StaticResource KeypadImageStyle">
    <Image.GestureRecognizers>
        <TapGestureRecognizer
            Tapped="ZeroTapped"
            NumberOfTapsRequired="1">
        </TapGestureRecognizer>
    </Image.GestureRecognizers>
</Image>

private void ZeroTapped(object sender, EventArgs e)

    phonenumber_label.Text = "0";

如何在一张图片上同时提及 2 个不同的点按?

【问题讨论】:

【参考方案1】:

我们可以在该图像上添加两个TapGestureRecognizer,一个用于单击,另一个用于双击。

xaml

 <Image >
     <Image.GestureRecognizers>
         <TapGestureRecognizer Tapped="TapGestureRecognizer_Single" NumberOfTapsRequired="1"/>
         <TapGestureRecognizer Tapped="TapGestureRecognizer_Double" NumberOfTapsRequired="2"/>
     </Image.GestureRecognizers>
 </Image>

后面的代码

  private void TapGestureRecognizer_Single(object sender, EventArgs e)
  
      label.Text = "0";
  

  private void TapGestureRecognizer_Double(object sender, EventArgs e)
  
      label.Text = "+";
  

【讨论】:

【参考方案2】:

我认为你可以使用计时器如果用户在 150 毫秒内点击两次,那么它就是双击。

int Tapped=0;
private void ZeroTapped(object sender,EventArgs e)

    if(Tapped==0)
    
        Device.StartTime(TimeSpan.FromMillSeconds(150),()=>
        
            if(Tapped=1)
            
                //1 tap.
            
            else
            
                 //double tap.
            
            Tapped=0;

            return false;
        
    
    else
    
        Tapped++;
    

【讨论】:

我在这方面缺少什么? @SreejithSree 抱歉,我忘记了一些代码,现在更新它。

以上是关于Xamarin Forms:如何为图像添加单击和双击?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Xamarin.Forms 中的段控件设置圆角

如何为 Xamarin Forms 应用程序创建 Nuget 包

Xamarin Forms:如何为自定义字体设置 FontAttributes Bold

我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?

在 Xamarin Forms 的 Telerik ListView 中,如何处理 Windows 上元素的右键单击事件?

Xamarin.Forms 在共享项目中设置图像源