Xamarin TapGestureRecognizer иногда не работает должным образом - PullRequest
0 голосов
/ 18 апреля 2019

В настоящее время я создаю мобильное приложение с использованием Xamarin.Forms, и у меня возникла проблема (как на платформе ios, так и на android), когда я пытался использовать жесты Xamarin.Forms , в частности, нажатие жест на xaml метка .Потому что я хочу использовать этот ярлык в качестве ссылки.

Проблема в том, что этот жест на вкладке, который я использовал, иногда не работает (примерно 5 раз тест = 1 раз ошибка).

Во время отладки, когда возникла проблема, я вижу, что вкладка все еще распознается, но она не отвечает при заданном мною действии.

Это происходит как на устройствах iOS, так и на устройствах Android.

Вот мой код XAML:

<RelativeLayout>
    <Image Source="icon_question" WidthRequest="15" HeightRequest="15"></Image>
    <Label Margin="15, -3, 0, 0" HorizontalOptions="CenterAndExpand" HorizontalTextAlignment="Center" 
           Text="Some text" TextColor="Blue" FontSize="15"  TextDecorations="Underline">
        <Label.GestureRecognizers>
            <TapGestureRecognizer Tapped="_tabLinkForgetPassword"></TapGestureRecognizer>
        </Label.GestureRecognizers>
    </Label>
</RelativeLayout>

, а вот мой код:

private void _tabLinkForgetPassword(object s, EventArgs e)
{
  App.Current.MainPage = new ResetPasswordPage(false);
}

Я ожидаю, что вкладка реагирует каждый раз, а не просто так.Я ценю вашу помощь.

1 Ответ

0 голосов
/ 18 апреля 2019

Как заявляет AndroDevil, вы должны обрабатывать жест касания родителя (Grid, StackLayout, ContentView, все, что вы хотите). в вашем случае, почему бы вам не использовать относительный макет? Таким образом, вы можете нажать либо метку, либо изображение.

Когда вы думаете, что это не работает, это просто, когда вы нажимаете на пустое пространство: между символами (или даже внутри пустоты символа, такого как O) (но признайте это, довольно сложно нажать на тех немногих пикселей)) вашего текста.

Наконец, вам не нужно устанавливать NumberOfTapsRequired, потому что, насколько я помню, это значение по умолчанию.

...