Xamarin TapGestureRecognizer иногда не работает должным образом

#xaml #xamarin #xamarin.forms #gesture #uitapgesturerecognizer

#xaml #xamarin #xamarin.forms #жест #uitapgesturerecognizer

Вопрос:

В настоящее время я создаю свое мобильное приложение с использованием Xamarin.Формы и я столкнулись с проблемой (как на платформе ios, так и на Android), когда я попытался использовать Xamarin.Формирует жесты, в частности жест касания на ярлыке 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. Вы добавили numberOfTapsRequired=»1″?

2. @AndroDevil уже пробовал, и я почти уверен, что numberOfTapsRequired не имеет значения. спасибо: D

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

4. @AndroDevil Это решает проблему, только мне нужно настроить размер RelativeLayout, чтобы он правильно соответствовал его компонентам. Большое вам спасибо.

5. Счастливого кодирования 🙂

Ответ №1:

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

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

И последнее, вам не нужно устанавливать numberOfTapsRequired, потому что, насколько я помню, это значение по умолчанию.