Xamarin Forms жест касания Два нажатия специально приводят к тому, что ссылка на объект не установлена для экземпляра объекта

#.net #xaml #xamarin.forms

#.net #xaml #xamarin.forms

Вопрос:

Странная проблема… Но если я специально попытаюсь использовать 2 нажатия, как двойное нажатие (быстрые нажатия), для взаимодействия со своей страницей, я получаю «Ссылка на объект не установлена для экземпляра объекта». Ошибка.

Однако, если я использую 1 numberOfTapsRequired или 3 numberOfTapsRequired, все работает нормально. Ошибки нет. Код выполняется как ожидалось.

Почему именно 2 нажатия выдают ошибку? Медленное нажатие с помощью ручного счетчика не генерирует ошибку. Так что это, в частности, проблема с двойным нажатием.

Я также пытался использовать счетчик в событии Tapped, а затем вызывать код после подсчета 2 нажатий. Та же проблема. Это… странно.

     <ContentPage.Content>
        <StackLayout BackgroundColor="Black" Padding="20,10,20,10">
            <Label x:Name="basemessage"  Text="Base Message"
                VerticalOptions="EndAndExpand" 
                HorizontalOptions="CenterAndExpand" BackgroundColor="Transparent" TextColor="White" FontSize="30">
                <Label.GestureRecognizers>
                    <TapGestureRecognizer x:Name="tappedmessage" NumberOfTapsRequired="1" Tapped="screentapped_Tapped"></TapGestureRecognizer>
                </Label.GestureRecognizers>
            </Label>
            <Label x:Name="itemslist"  Text="Items List"
                VerticalOptions="StartAndExpand" 
                HorizontalOptions="CenterAndExpand" BackgroundColor="Transparent" TextColor="White" FontSize="30">
                <Label.GestureRecognizers>
                    <TapGestureRecognizer x:Name="tappedlist" NumberOfTapsRequired="1" Tapped="screentapped_Tapped"></TapGestureRecognizer>
                </Label.GestureRecognizers>
            </Label>
            <Button x:Name="closedialog" Text="Continue..." TextTransform="None"
                VerticalOptions="End" 
                HorizontalOptions="CenterAndExpand" BackgroundColor="Transparent" TextColor="White" FontSize="25"
                Clicked="closedialog_Clicked"/>
        </StackLayout>
    </ContentPage.Content>
  

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

1. пожалуйста, отправьте трассировку стека для исключения

2. в любом случае двойное нажатие — плохой дизайн, используйте длительное нажатие

3. Я не получаю трассировку стека. У меня включены все исключения среды выполнения CRL. Пробовал включить все исключения Javascript (тестирование в Android) и ничего. Нет сведений об исключении и трассировки стека.

4. Я тестирую ваш код с помощью numberOfTapsRequired=2 как в iOS, так и в Android, и все это хорошо работает на моей стороне. Я не могу воспроизвести проблему.