I have been using TapGestureRecognizer for a while now, I had this issue from the beginning (the first time when I tested the app on an IOS device, for some reason I am having issues running a simulator, so I have been using a physical IOS device (iPhone 12 Pro Max)) and it seems that my TapGestureRecognizer is not being triggered on the IOS device. On UWP (which I mainly test on as it is quickest) I am able to switch between tabs, etc. on my app, (I am using TapGestureRecognizer for all buttons).
Here is one of the more simple examples where I am able to use the buttons in UWP but not on IOS.
XAML:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="fotbal.Oblibene" xmlns:viewModel="clr-namespace:fotbal;assembly=fotbal" xmlns:fotbal="clr-namespace:fotbal">
<Grid x:Name="Menu_Grid" />
</ContentPage>
CS:
Menu_Grid.ColumnSpacing = 30;
Menu_Grid.Margin = new Thickness(15, 0, 0, 0);
for (int i = 0; i < 5; i++) Menu_Grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
Menu_Grid.RowDefinitions.Add(new RowDefinition());
var page_switcher_tap_recognizer = new TapGestureRecognizer();
page_switcher_tap_recognizer.Tapped += (sender, e) =>
{
tab_switcher(sender, Menu_Grid, Oblibene_ScrollView);
};
int j = 0;
foreach (KeyValuePair<string, string> kvp in oblibene_categories)
{
Grid grid = new Grid
{
RowDefinitions = { new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }, new RowDefinition { Height = new GridLength(3) } },
ColumnDefinitions = { new ColumnDefinition() }
};
Label label = new Label { TextColor = Color.FromHex("#888888"), Text = kvp.Key, FontAttributes = FontAttributes.Bold, FontSize = 15, HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center };
BoxView boxView = new BoxView { Color = Color.White };
if (kvp.Value == selected_category)
{
label.TextColor = Color.FromHex("#439564");
boxView.Color = Color.FromHex("#439564");
}
var label_page_switcher_tap_recognizer = new TapGestureRecognizer();
label_page_switcher_tap_recognizer.Tapped += (sender, e) =>
{
tab_switcher(sender, Menu_Grid, Oblibene_ScrollView);
};
label.GestureRecognizers.Add(label_page_switcher_tap_recognizer);
var boxview_page_switcher_tap_recognizer = new TapGestureRecognizer();
boxview_page_switcher_tap_recognizer.Tapped += (sender, e) =>
{
tab_switcher(sender, Menu_Grid, Oblibene_ScrollView);
};
boxView.GestureRecognizers.Add(boxview_page_switcher_tap_recognizer);
grid.Children.Add(label);
grid.Children.Add(new NeatFrame { Content = boxView, CornerRadius = 2 }, 0, 1);
var grid_page_switcher_tap_recognizer = new TapGestureRecognizer();
grid_page_switcher_tap_recognizer.Tapped += (sender, e) =>
{
tab_switcher(sender, Menu_Grid, Oblibene_ScrollView);
};
grid.GestureRecognizers.Add(grid_page_switcher_tap_recognizer);
Menu_Grid.Children.Add(grid, j, 0);
j++;
}