не работает TapGestureRecognizer в iOS и UWP

#c# #xaml #xamarin.forms

#c# #xaml #xamarin.forms

Вопрос:

TapGestureRecognizer не работает на iOS и UWP, но отлично работает на Android. Что я должен сделать, чтобы заставить его работать на iOS и UWP?

Он не выдает никаких ошибок.

Фреймы находятся внутри страницы содержимого, а страницы содержимого — внутри страницы с вкладками.

Спасибо, если кто-нибудь может меня направить.

Это мой код:

 <StackLayout>
  <Frame  Margin="10,5" BackgroundColor="White" 
   CornerRadius="10"   HeightRequest="120"  IsClippedToBounds="True"
     InputTransparent="True" HasShadow="True"               
       BorderColor="Silver"  Visual="Material" Padding="0"            
    HorizontalOptions="FillAndExpand" VerticalOptions="Center">
                  
 
    <StackLayout Padding="0" VerticalOptions="FillAndExpand" 
  HorizontalOptions="FillAndExpand">

        <StackLayout.GestureRecognizers >
            <TapGestureRecognizer  Tapped="gesture"/>
        </StackLayout.GestureRecognizers>

        <StackLayout Padding="-10" >
            <Grid ColumnSpacing="10" >
                   <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="125"/>
                    <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

                <StackLayout Padding="0,1,-10,-7"  >
                    <Image Aspect="AspectFill"  Margin="-1"   
                     Source="mypic.jpg"/>
                </StackLayout>

     <StackLayout Grid.Column="1" Padding="20" 
                  VerticalOptions="Center"  >
        <Label FontSize="Large" FontAttributes="Bold,Italic" 
            Text="Mercury"  TextColor="MidnightBlue"/>
                    <Label FontSize="Medium" Text="mytext" 
                       TextColor="DarkSlateGray"/>
     </StackLayout>
            </Grid>
         </StackLayout>
    </StackLayout>
  </Frame>
 </StackLayout>
 

код, лежащий в основе

 private async void gesture(object sender, EventArgs e)
   {
        await   Navigation.PushAsync(new page1());
   }
 

Комментарии:

1. Просто наблюдение, поскольку я смотрю на это на телефоне, но XAML может быть трудно читать без приличного форматирования. Я рекомендую вам использовать формат документа (Ctrl K, Ctrl D в Visual Studio в Windows), чтобы открывающие и закрывающие теги хотя бы выстраивались в линию. Вы также можете настроить параметры так, чтобы атрибуты выстраивались вертикально, чтобы их было легче читать!

Ответ №1:

Удалите InputTransparent=»True» из тега Frame.

 <Frame Margin="10,5" BackgroundColor="White" 
       CornerRadius="10" HeightRequest="120" IsClippedToBounds="True"
       HasShadow="True" BorderColor="Silver" Visual="Material" Padding="0"            
       HorizontalOptions="FillAndExpand" VerticalOptions="Center">
 

Теперь это должно сработать