maui icon indicating copy to clipboard operation
maui copied to clipboard

PointerGestureRecognizer Does Not Work on Android

Open owaits opened this issue 1 year ago • 10 comments

Description

I am not able to get the PointerPressed event of PointerGestureRecognizer to work on Android. A brief look at the code would suggest its not even been implemented. I was trying to achieve a long press and managed to get this to work on Windows but on Android it does not work. After going round in a few circles it appears this just does not work on Android but I can find very little info to confirm this. The original task to implement Pointer gestures seems to not include an Android implemtation.

Steps to Reproduce

  1. Create New Maui App
  2. Modify the code as bellow:
<Label
    Text="Hello, World!"
    Style="{StaticResource Headline}"
    SemanticProperties.HeadingLevel="Level1" >
    <Label.GestureRecognizers>
        <PointerGestureRecognizer PointerPressed="PointerGestureRecognizer_PointerPressed" />
    </Label.GestureRecognizers>
</Label>
      private void PointerGestureRecognizer_PointerPressed(object sender, PointerEventArgs e)
      {
          count++;

          if (count == 1)
              CounterBtn.Text = $"Clicked {count} time";
          else
              CounterBtn.Text = $"Clicked {count} times";
      }
  1. Run on Android and press the Hello World label, the counter is not incremented but on Windows and IOS it is.

Link to public reproduction project repository

No response

Version with bug

8.0.3 GA

Is this a regression from previous behavior?

No, this is something new

Last version that worked well

Unknown/Other

Affected platforms

Android

Affected platform versions

No response

Did you find any workaround?

No

Relevant log output

No response

owaits avatar Feb 26 '24 18:02 owaits

I can confirm - PointerGestureRecognizer works on Windows but not on Android in 8.0.6. High relevance as this is a long awaited and urgently needed feature.

MartinRusk avatar Mar 04 '24 18:03 MartinRusk

Same - not only PointerPressed, but other methods doesnt seem to work neither on Android nor on Emulator

Antoniy2000 avatar Mar 06 '24 11:03 Antoniy2000

Same here. PointerExit in android for me doesnt work too

Version 8.0.10

flipper09112 avatar Mar 13 '24 19:03 flipper09112

Verified on 17.10.0 Preview 2.0, can use the code to repro the error on Android platforms with .NET Maui app.

jaosnz-rep avatar Mar 19 '24 06:03 jaosnz-rep

Also having this issue. However I noticed that pointer enter, exit and move events fire when I hover the element with a stylus but not when the stylus is touching the screen.

mrmrmystery avatar Apr 28 '24 16:04 mrmrmystery

The problem is still there. Maui 8.0.7-8.0.21, Visual studio 17.9.6

Odaronil avatar May 04 '24 10:05 Odaronil

For anyone experiencing this issue - a workaround is to use the community toolkit "TouchBehaviour": https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/behaviors/touch-behavior?tabs=toucheffect-xaml%2Ctouchbehavior-xaml

lukassoo avatar Aug 24 '24 20:08 lukassoo

For anyone experiencing this issue - a workaround is to use the community toolkit "TouchBehaviour": https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/behaviors/touch-behavior?tabs=toucheffect-xaml%2Ctouchbehavior-xaml

From what I can see (and I really hope I'm wrong!) TouchBehavior cannot tell you where the touch events happened which is a key difference for me from TapGestureRecognizer (which cannot tell you when it started) or PointerGestureRecognizer which works great on windows (location and start/stop/move) but seems to do nothing in Android.

christoroth avatar Sep 06 '24 17:09 christoroth

@christoroth For my use case the position didn't matter. I had a look and only see that there are two properties relating to the position: image

But the way it reads it may be pointing to the position of the element being pressed. I hope the MAUI team eventually gets through the mountain of issues and fixes this as well.

lukassoo avatar Sep 07 '24 02:09 lukassoo