Can anyone explain on how to detect simple touch gestures in a WinRT app? I tried using the GestureRecognizer class but it didn’t work:
public MainPage()
{
this.InitializeComponent();
Windows.UI.Input.GestureRecognizer gr = new Windows.UI.Input.GestureRecognizer();
gr.CrossSliding += gr_CrossSliding;
gr.Dragging += gr_Dragging;
gr.Holding += gr_Holding;
gr.ManipulationCompleted += gr_ManipulationCompleted;
gr.ManipulationInertiaStarting += gr_ManipulationInertiaStarting;
gr.ManipulationStarted += gr_ManipulationStarted;
gr.ManipulationUpdated += gr_ManipulationUpdated;
gr.RightTapped += gr_RightTapped;
gr.Tapped += gr_Tapped;
gr.GestureSettings = Windows.UI.Input.GestureSettings.ManipulationRotate | Windows.UI.Input.GestureSettings.ManipulationTranslateX | Windows.UI.Input.GestureSettings.ManipulationTranslateY |
Windows.UI.Input.GestureSettings.ManipulationScale | Windows.UI.Input.GestureSettings.ManipulationRotateInertia | Windows.UI.Input.GestureSettings.ManipulationScaleInertia |
Windows.UI.Input.GestureSettings.ManipulationTranslateInertia | Windows.UI.Input.GestureSettings.Tap;
}
void gr_Tapped(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.TappedEventArgs args)
{
Debug.WriteLine("gr_Tapped");
}
void gr_RightTapped(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.RightTappedEventArgs args)
{
Debug.WriteLine("gr_RightTapped");
}
void gr_Holding(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.HoldingEventArgs args)
{
Debug.WriteLine("gr_Holding");
}
void gr_Dragging(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.DraggingEventArgs args)
{
Debug.WriteLine("gr_Dragging");
}
void gr_CrossSliding(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.CrossSlidingEventArgs args)
{
Debug.WriteLine("gr_CrossSliding");
}
void gr_ManipulationUpdated(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.ManipulationUpdatedEventArgs args)
{
Debug.WriteLine("gr_ManipulationUpdated");
}
void gr_ManipulationStarted(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.ManipulationStartedEventArgs args)
{
Debug.WriteLine("gr_ManipulationStarted");
}
void gr_ManipulationCompleted(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.ManipulationCompletedEventArgs args)
{
Debug.WriteLine("gr_ManipulationCompleted");
}
void gr_ManipulationInertiaStarting(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.ManipulationInertiaStartingEventArgs args)
{
Debug.WriteLine("gr_ManipulationInertiaStarting");
}
If you will notice the MainPage Class has its own Manipulation Events which you can use without creating a seperate
GestureRecognizer. You can enable it by settingthis.ManipulationModetoManipulationModes.All. This will allow you to see responses on the MainPagesTapped,RightTapped,ManipulationStarting,ManipulationStarted,ManipulationDeltaandManipulationCompletedEvents.As far as getting the GestureRecongnizer to work according to this Blog and this MSDN Forum Posting you will need to handle the MainPage’s
PointerMoved,PointerReleasedandPointerPressedevents like so.According to the Documentation you need to enable the CrossSlide Event by adding it to your GestureRecongnizer and setting up the CrossSlideThresholds and Direction.
From last link:
example:
and make sure it is added to your
GestureSettings