为ListView内部的多个子视图触发点击手势

时间:2018-11-11 00:12:53

标签: ios listview xamarin xamarin.forms uitapgesturerecognizer

我有这个ListView

<ListView
    CachingStrategy="RecycleElement"
    x:Name="ItemList"
    HasUnevenRows="True"
    BackgroundColor="Transparent"
    SeparatorColor="{x:Static local:LmcColor.defaultFg}"
    HorizontalOptions="FillAndExpand"
    VerticalOptions="FillAndExpand"
    IsVisible="False"
    ItemSelected="ItemList_ItemSelected"/>

它的ItemTemplate初始化如下:

ItemList.ItemTemplate = new DataTemplate(() =>
    new ViewCell() { View = new ItemReadView() });

ItemReadView是一个ContentView,其中包含一个StackView,其中一个Image被称为ItemImage。我为此Image定义了手势识别器:

TapGestureRecognizer handler = new TapGestureRecognizer();
handler.Tapped += ((object sender, EventArgs e) =>
{
    // Do stuff!
});
ItemImage.GestureRecognizers.Clear();
ItemImage.GestureRecognizers.Add(handler);

它在Xamarin Forms 2.5.1.444934中运行良好。现在,在3.3.0.967583中,单击一次即可为多个图像视图调用“任务”。我不确定3.1.0.637273表格中是否存在此问题。该错误仅影响iOS。

作为一种解决方法,我在“执行操作”之前添加了200毫秒的延迟,如果在该间隔内有新事件到达,则“填充”不是“完成”。幸运的是,“真实”事件排在最后。不幸的是,我在点击之前滚动列表视图的次数越多,就会出现更多的事件,而且我担心某种资源溢出。

有人注意到吗?是否有“适当的”修复程序?我可能做错了什么吗?我应该将TapGestureRecognizer换成其他东西吗?如果可以,换成什么东西?

谢谢!

0 个答案:

没有答案