xamarin/Xamarin.Forms
[XForms] If parent and child element have gestures , Then child element gesture only fired. Parent element gesture not fired
Aperta
#6625 aperta il 21 giu 2019
a/gestures 🖖e/7 :clock7:help wantedpartnert/bug :bug:up-for-grabs
Metriche repository
- Star
- (5644 stelle)
- Metriche merge PR
- (Nessuna PR mergiata in 30 g)
Descrizione
Description
If parent and child element have gestures , Then child element gesture only fired. Parent element gesture not fired for all platforms (UWP, Android and IOS)
<local:GridExt x:Name="ListView" BackgroundColor="AntiqueWhite">
<local:GridExt.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
</local:GridExt.GestureRecognizers>
<ScrollView>
<StackLayout>
<local:ContentViewExt x:Name="ListViewItemGrid">
<local:ContentViewExt.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped_1"/>
</local:ContentViewExt.GestureRecognizers>
<Label x:Name="Item" FontSize="Large" Text="ItemTemplate" VerticalTextAlignment="Center" HorizontalTextAlignment="Center" HeightRequest="100" BackgroundColor="Gray"/>
</local:ContentViewExt>
</StackLayout>
</ScrollView>
</local:GridExt>
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
{
//DisplayAlert("ListView", "ListViewTappedFired", "Ok");
Debug.WriteLine("ListViewTappedFired");
}
private void TapGestureRecognizer_Tapped_1(object sender, EventArgs e)
{
//DisplayAlert("Item", "ItemTappedFired", "Ok");
Debug.WriteLine("ItemTappedFired");
}
}
public partial class GridExt : Grid
{
}
public partial class ContentViewExt : ContentView
{
}
Steps to Reproduce
- Run the Sample
- Tap the Label
- Note: ContentView gesture only fired, Grid gesture not fired.
Expected Behavior
I need child gesture fired and parent gesture fired. Give me any workaround. Note : I am find the android workaround, Thats worked for me. But I need uwp and ios also
Android render file
public class GridExtRenderer : ViewRenderer<GridExt, Views.View>
{
public GridExtRenderer(Context context) : base(context)
{
}
public override bool OnInterceptTouchEvent(Views.MotionEvent ev)
{
OnTouchEvent(ev);
return base.OnInterceptTouchEvent(ev);
}
}
Actual Behavior
If child element have gesture then parent gesture not fired.
Basic Information
- Version with issue: latest 4.0
- Last known good version: No
- IDE: Visual Studio 2017
- Nuget Packages: latest XF version 4.0
- Affected Devices: All
Reproduction Link
https://www.syncfusion.com/downloads/support/directtrac/general/ze/TouchTest876899649