#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">
Теперь это должно сработать